Go to the documentation of this file.
    9     template <
class T1, 
class T2,
 
   10               typename std::enable_if<std::is_arithmetic<T1>::value && std::is_arithmetic<T2>::value,
bool>::type=
false>
 
   11     YAKL_INLINE decltype(T1()+T2()) 
merge(T1 const t, T2 const f, 
bool cond) { 
return cond ? t : f; }
 
   13     template <
class T1, 
class T2, 
int rank, 
int myStyle>
 
   19         using yakl::componentwise::operator==;
 
   20         using yakl::componentwise::operator&&;
 
   21         using yakl::componentwise::operator!;
 
   26           yakl_throw(
"ERROR: calling merge with array shapes that do not match");
 
   28       Array<decltype(T1()+T2()),rank,
memHost,myStyle> ret = arr_true.createHostObject();
 
   29       for (
unsigned i=0; i < arr_true.totElems(); i++) {
 
   30         ret.data()[i] = mask.data()[i] ? arr_true.data()[i] : arr_false.data()[i];
 
   35     template <
class T1, 
class T2, 
int rank, 
int myStyle>
 
   41         using yakl::componentwise::operator==;
 
   42         using yakl::componentwise::operator&&;
 
   43         using yakl::componentwise::operator!;
 
   48           yakl_throw(
"ERROR: calling merge with array shapes that do not match");
 
   50       Array<decltype(T1()+T2()),rank,
memDevice,myStyle> ret = arr_true.createDeviceObject();
 
   52         ret.data()[i] = mask.data()[i] ? arr_true.data()[i] : arr_false.data()[i];
 
   54       ret.add_stream_dependency(stream);
 
   58     template <
class T1, 
class T2, 
int rank, 
unsigned D0, 
unsigned D1, 
unsigned D2, 
unsigned D3>
 
   63       SArray<decltype(T1()+T2()),rank,D0,D1,D2,D3> ret;
 
   64       for (
unsigned i=0; i < arr_true.
totElems(); i++) {
 
   70     template <
class T1, 
class T2, 
int rank, 
class B0, 
class B1, 
class B2, 
class B3>
 
   75       FSArray<decltype(T1()+T2()),rank,B0,B1,B2,B3> ret;
 
   76       for (
unsigned i=0; i < arr_true.
totElems(); i++) {
 
  
constexpr int memDevice
Specifies a device memory address space for a yakl::Array object.
Definition: YAKL_memory_spaces.h:13
static constexpr unsigned totElems()
Get the total number of array elements.
Definition: YAKL_FSArray.h:179
Implements the functionality of a stream for parallel kernel execution. If the Stream::create() metho...
Definition: YAKL_streams_events.h:394
decltype(T1()+T2()) YAKL_INLINE merge(T1 const t, T2 const f, bool cond)
Definition: YAKL_intrinsics_merge.h:11
YAKL_INLINE auto shape(T const &arr)
Definition: YAKL_intrinsics_shape.h:9
YAKL_INLINE bool allocated(T const &arr)
Definition: YAKL_intrinsics_allocated.h:9
void parallel_for(char const *str, Bounds< N, simple > const &bounds, F const &f, LaunchConfig< VecLen, B4B > config=LaunchConfig<>())
[ASYNCHRONOUS] Launch the passed functor in parallel.
#define __YAKL_NAMESPACE_WRAPPER_END__
Definition: YAKL.h:20
#define __YAKL_NAMESPACE_WRAPPER_BEGIN__
Definition: YAKL.h:19
LaunchConfig<> DefaultLaunchConfig
This launch configuration sets vector length to the device default and B4B to false.
Definition: YAKL_LaunchConfig.h:77
#define YAKL_INLINE
Used to decorate functions called from kernels (parallel_for and parallel_outer) or from CPU function...
Definition: YAKL_defines.h:140
YAKL_INLINE void yakl_throw(const char *msg)
Throw an error message. Works from the host or device.
Definition: YAKL_error.h:17
This declares the yakl::Array class. Please see the yakl::styleC and yakl::styleFortran template spec...
Definition: YAKL_Array.h:40
C-style array on the stack similar in nature to, e.g., float arr[ny][nx];
Definition: YAKL_CSArray.h:30
static constexpr unsigned totElems()
Get the total number of array elements.
Definition: YAKL_CSArray.h:131
YAKL_INLINE T * data() const
Get the underlying raw data pointer.
Definition: YAKL_CSArray.h:123
YAKL_INLINE T * data() const
Get the underlying raw data pointer.
Definition: YAKL_FSArray.h:171
#define YAKL_LAMBDA
Used to create C++ lambda expressions passed to parallel_for and parallel_outer
Definition: YAKL_defines.h:128
Fortran-style array on the stack similar in nature to, e.g., float arr[ny][nx];
Definition: YAKL_FSArray.h:53
constexpr int memHost
Specifies a device memory address space for a yakl::Array object.
Definition: YAKL_memory_spaces.h:15
bool any(Array< T, rank, memHost, myStyle > arr)
Definition: YAKL_intrinsics_any.h:10