DPC++ Runtime
Runtime libraries for oneAPI DPC++
util.hpp File Reference
#include <cassert>
#include <complex>
#include <sycl/ext/oneapi/experimental/complex/complex.hpp>
#include <sycl/sycl.hpp>
#include <type_traits>
#include <syclcompat/memory.hpp>
Include dependency graph for util.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  syclcompat::detail::DataType< T >
 
struct  syclcompat::detail::DataType< sycl::vec< T, 2 > >
 
class  syclcompat::experimental::logical_group
 The logical-group is a logical collection of some work-items within a work-group. More...
 

Namespaces

 syclcompat
 
 syclcompat::detail
 Atomic extension to implement standard APIs in std::atomic.
 
 syclcompat::experimental
 

Macros

#define SYCL_EXT_ONEAPI_COMPLEX
 

Functions

void syclcompat::detail::matrix_mem_copy (void *to_ptr, const void *from_ptr, int to_ld, int from_ld, int rows, int cols, int elem_size, sycl::queue queue=get_default_queue(), bool async=false)
 
template<typename T >
void syclcompat::detail::matrix_mem_copy (T *to_ptr, const T *from_ptr, int to_ld, int from_ld, int rows, int cols, sycl::queue queue=get_default_queue(), bool async=false)
 Copy matrix data. More...
 
int syclcompat::cast_double_to_int (double d, bool use_high32=true)
 Cast the high or low 32 bits of a double to an integer. More...
 
double syclcompat::cast_ints_to_double (int high32, int low32)
 Combine two integers, the first as the high 32 bits and the second as the low 32 bits, into a double. More...
 
float syclcompat::fast_length (const float *a, int len)
 Compute fast_length for variable-length array. More...
 
template<typename S , typename T >
syclcompat::vectorized_max (T a, T b)
 Compute vectorized max for two values, with each value treated as a vector type S. More...
 
template<typename S , typename T >
syclcompat::vectorized_min (T a, T b)
 Compute vectorized min for two values, with each value treated as a vector type S. More...
 
template<typename S , typename T >
syclcompat::vectorized_isgreater (T a, T b)
 Compute vectorized isgreater for two values, with each value treated as a vector type S. More...
 
template<>
unsigned syclcompat::vectorized_isgreater< sycl::ushort2, unsigned > (unsigned a, unsigned b)
 Compute vectorized isgreater for two unsigned int values, with each value treated as a vector of two unsigned short. More...
 
template<typename T >
syclcompat::reverse_bits (T a)
 Reverse the bit order of an unsigned integer. More...
 
unsigned int syclcompat::byte_level_permute (unsigned int a, unsigned int b, unsigned int s)
 
template<typename T >
int syclcompat::ffs (T a)
 Find position of first least significant set bit in an integer. More...
 
template<typename T >
syclcompat::select_from_sub_group (sycl::sub_group g, T x, int remote_local_id, int logical_sub_group_size=32)
 select_from_sub_group allows work-items to obtain a copy of a value held by any other work-item in the sub_group. More...
 
template<typename T >
syclcompat::shift_sub_group_left (sycl::sub_group g, T x, unsigned int delta, int logical_sub_group_size=32)
 shift_sub_group_left move values held by the work-items in a sub_group directly to another work-item in the sub_group, by shifting values a fixed number of work-items to the left. More...
 
template<typename T >
syclcompat::shift_sub_group_right (sycl::sub_group g, T x, unsigned int delta, int logical_sub_group_size=32)
 shift_sub_group_right move values held by the work-items in a sub_group directly to another work-item in the sub_group, by shifting values a fixed number of work-items to the right. More...
 
template<typename T >
syclcompat::permute_sub_group_by_xor (sycl::sub_group g, T x, unsigned int mask, int logical_sub_group_size=32)
 permute_sub_group_by_xor permutes values by exchanging values held by pairs of work-items identified by computing the bitwise exclusive OR of the work-item id and some fixed mask. More...
 
template<typename T >
sycl::vec< T, 2 > syclcompat::cmul (sycl::vec< T, 2 > x, sycl::vec< T, 2 > y)
 Computes the multiplication of two complex numbers. More...
 
template<typename T >
sycl::vec< T, 2 > syclcompat::cdiv (sycl::vec< T, 2 > x, sycl::vec< T, 2 > y)
 Computes the division of two complex numbers. More...
 
template<typename T >
syclcompat::cabs (sycl::vec< T, 2 > x)
 Computes the magnitude of a complex number. More...
 
template<typename T >
sycl::vec< T, 2 > syclcompat::conj (sycl::vec< T, 2 > x)
 Computes the complex conjugate of a complex number. More...
 
int syclcompat::get_sycl_language_version ()
 Inherited from the original SYCLomatic compatibility headers. More...
 
template<int dimensions = 3>
void syclcompat::experimental::nd_range_barrier (sycl::nd_item< dimensions > item, sycl::atomic_ref< unsigned int, sycl::memory_order::acq_rel, sycl::memory_scope::device, sycl::access::address_space::global_space > &counter)
 Synchronize work items from all work groups within a SYCL kernel. More...
 
template<>
void syclcompat::experimental::nd_range_barrier (sycl::nd_item< 1 > item, sycl::atomic_ref< unsigned int, sycl::memory_order::acq_rel, sycl::memory_scope::device, sycl::access::address_space::global_space > &counter)
 Synchronize work items from all work groups within a SYCL kernel. More...
 

Macro Definition Documentation

◆ SYCL_EXT_ONEAPI_COMPLEX

#define SYCL_EXT_ONEAPI_COMPLEX

Definition at line 34 of file util.hpp.