-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathequal.cpp
31 lines (25 loc) · 970 Bytes
/
equal.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include "equal.h"
bool TRTC_Equal(const DVVectorLike& vec1, const DVVectorLike& vec2, bool& ret)
{
static TRTC_For s_for({ "view_vec1", "view_vec2", "view_res" }, "idx",
" if (view_vec1[idx ]!=(decltype(view_vec1)::value_t)view_vec2[idx ]) view_res[0]=false;\n"
);
ret = true;
DVVector dvres("bool", 1, &ret);
const DeviceViewable* args[] = { &vec1, &vec2, &dvres };
if (!s_for.launch_n(vec1.size(), args)) return false;
dvres.to_host(&ret);
return true;
}
bool TRTC_Equal(const DVVectorLike& vec1, const DVVectorLike& vec2, const Functor& binary_pred, bool& ret)
{
static TRTC_For s_for({ "view_vec1", "view_vec2", "view_res", "binary_pred" }, "idx",
" if (!binary_pred(view_vec1[idx], view_vec2[idx])) view_res[0]=false;\n"
);
ret = true;
DVVector dvres("bool", 1, &ret);
const DeviceViewable* args[] = { &vec1, &vec2, &dvres, &binary_pred };
if (!s_for.launch_n(vec1.size(), args)) return false;
dvres.to_host(&ret);
return true;
}