OpenCL kernels for the bisection algorithm for eigenvalues. More...
Go to the source code of this file.
Classes | |
struct | viennacl::linalg::opencl::kernels::bisect_kernel< NumericT > |
Main kernel class for the generation of the bisection kernels and utilities. More... | |
Namespaces | |
viennacl | |
Main namespace in ViennaCL. Holds all the basic types such as vector, matrix, etc. and defines operations upon them. | |
viennacl::linalg | |
Provides all linear algebra operations which are not covered by operator overloads. | |
viennacl::linalg::opencl | |
Holds all routines providing OpenCL linear algebra operations. | |
viennacl::linalg::opencl::kernels | |
Contains the OpenCL kernel generation functions for a predefined set of functionality. | |
Functions | |
template<typename StringType > | |
void | viennacl::linalg::opencl::kernels::generate_bisect_kernel_config (StringType &source) |
template<typename StringType > | |
void | viennacl::linalg::opencl::kernels::generate_bisect_kernel_floorPow2 (StringType &source, std::string const &numeric_string) |
OpenCL function for computing the next lower power of two of n. More... | |
template<typename StringType > | |
void | viennacl::linalg::opencl::kernels::generate_bisect_kernel_ceilPow2 (StringType &source, std::string const &numeric_string) |
OpenCL function for computing the next higher power of two of n. More... | |
template<typename StringType > | |
void | viennacl::linalg::opencl::kernels::generate_bisect_kernel_computeMidpoint (StringType &source, std::string const &numeric_string) |
OpenCL function for computing the midpoint of an interval [left, right] avoiding overflow if possible. More... | |
template<typename StringType > | |
void | viennacl::linalg::opencl::kernels::generate_bisect_kernel_storeInterval (StringType &source, std::string const &numeric_string) |
OpenCL function for checking if interval converged and store appropriately. More... | |
template<typename StringType > | |
void | viennacl::linalg::opencl::kernels::generate_bisect_kernel_storeIntervalShort (StringType &source, std::string const &numeric_string) |
template<typename StringType > | |
void | viennacl::linalg::opencl::kernels::generate_bisect_kernel_computeNumSmallerEigenvals (StringType &source, std::string const &numeric_string) |
template<typename StringType > | |
void | viennacl::linalg::opencl::kernels::generate_bisect_kernel_computeNumSmallerEigenvalsLarge (StringType &source, std::string const &numeric_string) |
template<typename StringType > | |
void | viennacl::linalg::opencl::kernels::generate_bisect_kernel_storeNonEmptyIntervals (StringType &source, std::string const &numeric_string) |
template<typename StringType > | |
void | viennacl::linalg::opencl::kernels::generate_bisect_kernel_storeNonEmptyIntervalsLarge (StringType &source, std::string const &numeric_string) |
OpenCL function for storing all non-empty intervals resulting from the subdivision of the interval currently processed by the thread. More... | |
template<typename StringType > | |
void | viennacl::linalg::opencl::kernels::generate_bisect_kernel_createIndicesCompaction (StringType &source, std::string const &numeric_string) |
OpenCL function for creating indices for compaction. More... | |
template<typename StringType > | |
void | viennacl::linalg::opencl::kernels::generate_bisect_kernel_createIndicesCompactionShort (StringType &source, std::string const &numeric_string) |
template<typename StringType > | |
void | viennacl::linalg::opencl::kernels::generate_bisect_kernel_compactIntervals (StringType &source, std::string const &numeric_string) |
OpenCL function for performing stream compaction for second child intervals. More... | |
template<typename StringType > | |
void | viennacl::linalg::opencl::kernels::generate_bisect_kernel_compactIntervalsShort (StringType &source, std::string const &numeric_string) |
template<typename StringType > | |
void | viennacl::linalg::opencl::kernels::generate_bisect_kernel_storeIntervalConverged (StringType &source, std::string const &numeric_string) |
template<typename StringType > | |
void | viennacl::linalg::opencl::kernels::generate_bisect_kernel_storeIntervalConvergedShort (StringType &source, std::string const &numeric_string) |
template<typename StringType > | |
void | viennacl::linalg::opencl::kernels::generate_bisect_kernel_subdivideActiveInterval (StringType &source, std::string const &numeric_string) |
Subdivide interval if active and not already converged. More... | |
template<typename StringType > | |
void | viennacl::linalg::opencl::kernels::generate_bisect_kernel_subdivideActiveIntervalShort (StringType &source, std::string const &numeric_string) |
template<typename StringType > | |
void | viennacl::linalg::opencl::kernels::generate_bisect_kernel_bisectKernel (StringType &source, std::string const &numeric_string) |
OpenCL kernel for bisection to find eigenvalues of a real, symmetric, and tridiagonal matrix. More... | |
template<typename StringType > | |
void | viennacl::linalg::opencl::kernels::generate_bisect_kernel_bisectKernelLarge_MultIntervals (StringType &source, std::string const &numeric_string) |
Perform second step of bisection algorithm for large matrices for intervals that after the first step contained more than one eigenvalue. More... | |
template<typename StringType > | |
void | viennacl::linalg::opencl::kernels::generate_bisect_kernel_bisectKernelLarge_OneIntervals (StringType &source, std::string const &numeric_string) |
OpenCL kernel for Determining eigenvalues for large matrices for intervals that after the first step contained one eigenvalue. More... | |
template<typename StringType > | |
void | viennacl::linalg::opencl::kernels::generate_bisect_kernel_writeToGmem (StringType &source, std::string const &numeric_string) |
template<typename StringType > | |
void | viennacl::linalg::opencl::kernels::generate_bisect_kernel_compactStreamsFinal (StringType &source, std::string const &numeric_string) |
OpenCL function for performing final stream compaction before writing data to global memory. More... | |
template<typename StringType > | |
void | viennacl::linalg::opencl::kernels::generate_bisect_kernel_scanCompactBlocksStartAddress (StringType &source, std::string const &numeric_string) |
OpenCL function for computing addresses to obtain compact list of block start addresses. More... | |
template<typename StringType > | |
void | viennacl::linalg::opencl::kernels::generate_bisect_kernel_scanSumBlocks (StringType &source, std::string const &numeric_string) |
OpenCL function for performing scan to obtain number of eigenvalues before a specific block. More... | |
template<typename StringType > | |
void | viennacl::linalg::opencl::kernels::generate_bisect_kernel_scanInitial (StringType &source, std::string const &numeric_string) |
Perform initial scan for compaction of intervals containing one and multiple eigenvalues; also do initial scan to build blocks. More... | |
template<typename StringType > | |
void | viennacl::linalg::opencl::kernels::generate_bisect_kernel_bisectKernelLarge (StringType &source, std::string const &numeric_string) |
OpenCL kernel for bisection to find eigenvalues of a real, symmetric, and tridiagonal matrix. More... | |
OpenCL kernels for the bisection algorithm for eigenvalues.
Implementation based on the sample provided with the CUDA 6.0 SDK, for which the creation of derivative works is allowed by including the following statement: "This software contains source code provided by NVIDIA Corporation."
Definition in file bisect.hpp.