Shamrock 2025.10.0
Astrophysical Code
Loading...
Searching...
No Matches
Namespaces | Macros | Functions
bitonicSort_legacy.cpp File Reference
#include "shambase/exception.hpp"
#include "shambase/integer.hpp"
#include "shamalgs/details/algorithm/bitonicSort.hpp"
#include "shamcomm/logs.hpp"
#include <stdexcept>
+ Include dependency graph for bitonicSort_legacy.cpp:

Go to the source code of this file.

Namespaces

namespace  shamalgs
 namespace to contain everything implemented by shamalgs
 
namespace  shamalgs::algorithm
 namespace to store algorithms implemented by shamalgs
 
namespace  shamalgs::algorithm::details
 namespace to store algorithms implemented by shamalgs
 

Macros

#define MAXORDER_SORT_KERNEL   16
 
#define ORDER(a, b, ida, idb)
 
#define ORDERV(x, idx, a, b)
 
#define B2V(x, idx, a)   {ORDERV(x, idx, a, a + 1)}
 
#define B4V(x, idx, a)
 
#define B8V(x, idx, a)
 
#define B16V(x, idx, a)
 
#define B32V(x, idx, a)
 

Functions

template<class Tkey , class Tval >
void shamalgs::algorithm::details::sort_by_key_bitonic_legacy (sycl::queue &q, sycl::buffer< Tkey > &buf_key, sycl::buffer< Tval > &buf_values, u32 len)
 
template void shamalgs::algorithm::details::sort_by_key_bitonic_legacy (sycl::queue &q, sycl::buffer< u32 > &buf_key, sycl::buffer< u32 > &buf_values, u32 len)
 
template void shamalgs::algorithm::details::sort_by_key_bitonic_legacy (sycl::queue &q, sycl::buffer< u64 > &buf_key, sycl::buffer< u32 > &buf_values, u32 len)
 

Detailed Description

Author
Timothée David–Cléris (tim.s.nosp@m.hamr.nosp@m.ock@p.nosp@m.roto.nosp@m.n.me)

Definition in file bitonicSort_legacy.cpp.

Macro Definition Documentation

◆ B16V

#define B16V (   x,
  idx,
 
)
Value:
{ \
for (int i16 = 0; i16 < 8; i16++) { \
ORDERV(x, idx, a + i16, a + i16 + 8) \
} \
B8V(x, idx, a) B8V(x, idx, a + 8) \
}
std::int16_t i16
16 bit integer

Definition at line 71 of file bitonicSort_legacy.cpp.

◆ B2V

#define B2V (   x,
  idx,
 
)    {ORDERV(x, idx, a, a + 1)}

Definition at line 53 of file bitonicSort_legacy.cpp.

◆ B32V

#define B32V (   x,
  idx,
 
)
Value:
{ \
for (int i32 = 0; i32 < 16; i32++) { \
ORDERV(x, idx, a + i32, a + i32 + 16) \
} \
B16V(x, idx, a) B16V(x, idx, a + 16) \
}
std::int32_t i32
32 bit integer

Definition at line 79 of file bitonicSort_legacy.cpp.

◆ B4V

#define B4V (   x,
  idx,
 
)
Value:
{ \
for (int i4 = 0; i4 < 2; i4++) { \
ORDERV(x, idx, a + i4, a + i4 + 2) \
} \
B2V(x, idx, a) B2V(x, idx, a + 2) \
}

Definition at line 55 of file bitonicSort_legacy.cpp.

◆ B8V

#define B8V (   x,
  idx,
 
)
Value:
{ \
for (int i8 = 0; i8 < 4; i8++) { \
ORDERV(x, idx, a + i8, a + i8 + 4) \
} \
B4V(x, idx, a) B4V(x, idx, a + 4) \
}
std::int8_t i8
8 bit integer

Definition at line 63 of file bitonicSort_legacy.cpp.

◆ MAXORDER_SORT_KERNEL

#define MAXORDER_SORT_KERNEL   16

Definition at line 25 of file bitonicSort_legacy.cpp.

◆ ORDER

#define ORDER (   a,
  b,
  ida,
  idb 
)
Value:
{ \
bool swap = reverse ^ (a < b); \
Tkey auxa = a; \
Tkey auxb = b; \
Tval auxida = ida; \
Tval auxidb = idb; \
a = (swap) ? auxb : auxa; \
b = (swap) ? auxa : auxb; \
ida = (swap) ? auxidb : auxida; \
idb = (swap) ? auxida : auxidb; \
}

Definition at line 27 of file bitonicSort_legacy.cpp.

◆ ORDERV

#define ORDERV (   x,
  idx,
  a,
 
)
Value:
{ \
bool swap = reverse ^ (x[a] < x[b]); \
Tkey auxa = x[a]; \
Tkey auxb = x[b]; \
Tval auxida = idx[a]; \
Tval auxidb = idx[b]; \
x[a] = (swap) ? auxb : auxa; \
x[b] = (swap) ? auxa : auxb; \
idx[a] = (swap) ? auxidb : auxida; \
idx[b] = (swap) ? auxida : auxidb; \
}

Definition at line 40 of file bitonicSort_legacy.cpp.