Skip to content

Commit

Permalink
[SYCLomatic] Support migration of thrust::set_symmetric_difference_by…
Browse files Browse the repository at this point in the history
…_key and thrust::set_symmetric_difference (#985)


Signed-off-by: chenwei.sun <chenwei.sun@intel.com>
  • Loading branch information
tomflinda authored Jul 4, 2023
1 parent 6544441 commit a2f86be
Show file tree
Hide file tree
Showing 4 changed files with 196 additions and 2 deletions.
14 changes: 14 additions & 0 deletions clang/lib/DPCT/APINamesThrust.inc
Original file line number Diff line number Diff line change
Expand Up @@ -1083,3 +1083,17 @@ thrustFactory("thrust::set_intersection",
{ 7,PolicyState::HasPolicy,5,"oneapi::dpl::set_intersection", HelperFeatureEnum::no_feature_helper},
{ 6,PolicyState::NoPolicy, 5,"oneapi::dpl::set_intersection", HelperFeatureEnum::no_feature_helper}}),


// thrust::set_symmetric_difference
thrustFactory("thrust::set_symmetric_difference",
{{ 6,PolicyState::HasPolicy,5,"oneapi::dpl::set_symmetric_difference", HelperFeatureEnum::no_feature_helper},
{ 5,PolicyState::NoPolicy, 5,"oneapi::dpl::set_symmetric_difference", HelperFeatureEnum::no_feature_helper},
{ 7,PolicyState::HasPolicy,5,"oneapi::dpl::set_symmetric_difference", HelperFeatureEnum::no_feature_helper},
{ 6,PolicyState::NoPolicy, 5,"oneapi::dpl::set_symmetric_difference", HelperFeatureEnum::no_feature_helper}}),

// thrust::set_symmetric_difference_by_key
thrustFactory("thrust::set_symmetric_difference_by_key",
{{ 9, PolicyState::HasPolicy,8, MapNames::getDpctNamespace() + "set_symmetric_difference", HelperFeatureEnum::device_ext},
{ 8, PolicyState::NoPolicy, 8, MapNames::getDpctNamespace() + "set_symmetric_difference", HelperFeatureEnum::device_ext},
{ 10,PolicyState::HasPolicy,8, MapNames::getDpctNamespace() + "set_symmetric_difference", HelperFeatureEnum::device_ext},
{ 9, PolicyState::NoPolicy, 8, MapNames::getDpctNamespace() + "set_symmetric_difference", HelperFeatureEnum::device_ext}}),
4 changes: 2 additions & 2 deletions clang/lib/DPCT/APINames_thrust.inc
Original file line number Diff line number Diff line change
Expand Up @@ -151,8 +151,8 @@ ENTRY(thrust::set_difference, thrust::set_difference, true, NO_FLAG, P4, "commen
ENTRY(thrust::set_difference_by_key, thrust::set_difference_by_key, true, NO_FLAG, P4, "comment")
ENTRY(thrust::set_intersection, thrust::set_intersection, true, NO_FLAG, P4, "comment")
ENTRY(thrust::set_intersection_by_key, thrust::set_intersection_by_key, true, NO_FLAG, P4, "comment")
ENTRY(thrust::set_symmetric_difference, thrust::set_symmetric_difference, false, NO_FLAG, P4, "comment")
ENTRY(thrust::set_symmetric_difference_by_key, thrust::set_symmetric_difference_by_key, false, NO_FLAG, P4, "comment")
ENTRY(thrust::set_symmetric_difference, thrust::set_symmetric_difference, true, NO_FLAG, P4, "comment")
ENTRY(thrust::set_symmetric_difference_by_key, thrust::set_symmetric_difference_by_key, true, NO_FLAG, P4, "comment")
ENTRY(thrust::set_union, thrust::set_union, false, NO_FLAG, P4, "comment")
ENTRY(thrust::set_union_by_key, thrust::set_union_by_key, false, NO_FLAG, P4, "comment")
ENTRY(thrust::sin, thrust::sin, true, NO_FLAG, P4, "successful")
Expand Down
99 changes: 99 additions & 0 deletions clang/test/dpct/thrust-algo-part2.cu
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
// UNSUPPORTED: cuda-8.0
// UNSUPPORTED: v8.0
// RUN: dpct --format-range=none -out-root %T/thrust-algo-part2 %s --cuda-include-path="%cuda-path/include" -- -std=c++14 -x cuda --cuda-host-only
// RUN: FileCheck --input-file %T/thrust-algo-part2/thrust-algo-part2.dp.cpp --match-full-lines %s

#include <thrust/device_malloc.h>
#include <thrust/device_vector.h>
#include <thrust/execution_policy.h>
#include <thrust/host_vector.h>
#include <thrust/set_operations.h>

struct Compare {
__host__ __device__ bool operator()(const int &a, const int &b) {
return a < b;
}
};

void set_symmetric_difference() {
int A1[7] = {0, 1, 2, 2, 4, 6, 7};
int A2[5] = {1, 1, 2, 5, 8};
int result[8];
thrust::device_vector<int> d_A1(A1, A1 + 7);
thrust::device_vector<int> d_A2(A2, A2 + 5);
thrust::device_vector<int> d_result(8);
thrust::host_vector<int> h_A1(A1, A1 + 7);
thrust::host_vector<int> h_A2(A2, A2 + 5);
thrust::host_vector<int> h_result(8);

// CHECK: oneapi::dpl::set_symmetric_difference(oneapi::dpl::execution::seq, A1, A1 + 4, A2, A2 + 2, result);
// CHECK-NEXT: oneapi::dpl::set_symmetric_difference(oneapi::dpl::execution::seq, A1, A1 + 4, A2, A2 + 2, result);
// CHECK-NEXT: oneapi::dpl::set_symmetric_difference(oneapi::dpl::execution::seq, A1, A1 + 5, A2, A2 + 5, result, Compare());
// CHECK-NEXT: oneapi::dpl::set_symmetric_difference(oneapi::dpl::execution::seq, A1, A1 + 5, A2, A2 + 5, result, Compare());
// CHECK-NEXT: oneapi::dpl::set_symmetric_difference(oneapi::dpl::execution::make_device_policy(q_ct1), d_A1.begin(), d_A1.end(), d_A2.begin(), d_A2.end(), d_result.begin());
// CHECK-NEXT: oneapi::dpl::set_symmetric_difference(oneapi::dpl::execution::make_device_policy(q_ct1), d_A1.begin(), d_A1.end(), d_A2.begin(), d_A2.end(), d_result.begin());
// CHECK-NEXT: oneapi::dpl::set_symmetric_difference(oneapi::dpl::execution::make_device_policy(q_ct1), d_A1.begin(), d_A1.end(), d_A2.begin(), d_A2.end(), d_result.begin(), oneapi::dpl::less<int>());
// CHECK-NEXT: oneapi::dpl::set_symmetric_difference(oneapi::dpl::execution::make_device_policy(q_ct1), d_A1.begin(), d_A1.end(), d_A2.begin(), d_A2.end(), d_result.begin(), oneapi::dpl::less<int>());
// CHECK-NEXT: oneapi::dpl::set_symmetric_difference(oneapi::dpl::execution::seq, h_A1.begin(), h_A1.end(), h_A2.begin(), h_A2.end(), h_result.begin());
// CHECK-NEXT: oneapi::dpl::set_symmetric_difference(oneapi::dpl::execution::seq, h_A1.begin(), h_A1.end(), h_A2.begin(), h_A2.end(), h_result.begin());
// CHECK-NEXT: oneapi::dpl::set_symmetric_difference(oneapi::dpl::execution::seq, h_A1.begin(), h_A1.end(), h_A2.begin(), h_A2.end(), h_result.begin(), oneapi::dpl::less<int>());
// CHECK-NEXT: oneapi::dpl::set_symmetric_difference(oneapi::dpl::execution::seq, h_A1.begin(), h_A1.end(), h_A2.begin(), h_A2.end(), h_result.begin(), oneapi::dpl::less<int>());
thrust::set_symmetric_difference(thrust::host, A1, A1 + 4, A2, A2 + 2, result);
thrust::set_symmetric_difference(A1, A1 + 4, A2, A2 + 2, result);
thrust::set_symmetric_difference(thrust::host, A1, A1 + 5, A2, A2 + 5, result, Compare());
thrust::set_symmetric_difference(A1, A1 + 5, A2, A2 + 5, result, Compare());
thrust::set_symmetric_difference(thrust::device, d_A1.begin(), d_A1.end(), d_A2.begin(), d_A2.end(), d_result.begin());
thrust::set_symmetric_difference(d_A1.begin(), d_A1.end(), d_A2.begin(), d_A2.end(), d_result.begin());
thrust::set_symmetric_difference(thrust::device, d_A1.begin(), d_A1.end(), d_A2.begin(), d_A2.end(), d_result.begin(), thrust::less<int>());
thrust::set_symmetric_difference(d_A1.begin(), d_A1.end(), d_A2.begin(), d_A2.end(), d_result.begin(), thrust::less<int>());
thrust::set_symmetric_difference(thrust::host, h_A1.begin(), h_A1.end(), h_A2.begin(), h_A2.end(), h_result.begin());
thrust::set_symmetric_difference(h_A1.begin(), h_A1.end(), h_A2.begin(), h_A2.end(), h_result.begin());
thrust::set_symmetric_difference(thrust::host, h_A1.begin(), h_A1.end(), h_A2.begin(), h_A2.end(), h_result.begin(), thrust::less<int>());
thrust::set_symmetric_difference(h_A1.begin(), h_A1.end(), h_A2.begin(), h_A2.end(), h_result.begin(), thrust::less<int>());
}

void set_symmetric_difference_by_key() {
int A_keys[7] = {0, 1, 2, 2, 4, 6, 7};
int A_vals[7] = {0, 0, 0, 0, 0, 0, 0};
int B_keys[5] = {1, 1, 2, 5, 8};
int B_vals[5] = {1, 1, 1, 1, 1};
int keys_result[8];
int vals_result[8];
thrust::device_vector<int> d_keys_result(8);
thrust::device_vector<int> d_vals_result(8);
thrust::device_vector<int> d_A_keys(A_keys, A_keys + 7);
thrust::device_vector<int> d_A_vals(A_vals, A_vals + 7);
thrust::device_vector<int> d_B_keys(B_keys, B_keys + 5);
thrust::device_vector<int> d_B_vals(B_vals, B_vals + 5);
thrust::host_vector<int> h_keys_result(8);
thrust::host_vector<int> h_vals_result(8);
thrust::host_vector<int> h_A_keys(A_keys, A_keys + 7);
thrust::host_vector<int> h_A_vals(A_vals, A_vals + 7);
thrust::host_vector<int> h_B_keys(B_keys, B_keys + 5);
thrust::host_vector<int> h_B_vals(B_vals, B_vals + 5);

// CHECK: dpct::set_symmetric_difference(oneapi::dpl::execution::seq, A_keys, A_keys + 7, B_keys, B_keys + 5, A_vals, B_vals, keys_result, vals_result);
// CHECK-NEXT: dpct::set_symmetric_difference(oneapi::dpl::execution::seq, A_keys, A_keys + 7, B_keys, B_keys + 5, A_vals, B_vals, keys_result, vals_result);
// CHECK-NEXT: dpct::set_symmetric_difference(oneapi::dpl::execution::seq, A_keys, A_keys + 7, B_keys, B_keys + 5, A_vals, B_vals, keys_result, vals_result, Compare());
// CHECK-NEXT: dpct::set_symmetric_difference(oneapi::dpl::execution::seq, A_keys, A_keys + 7, B_keys, B_keys + 5, A_vals, B_vals, keys_result, vals_result, Compare());
// CHECK-NEXT: dpct::set_symmetric_difference(oneapi::dpl::execution::make_device_policy(q_ct1), d_A_keys.begin(), d_A_keys.end(), d_B_keys.begin(), d_B_keys.end(), d_A_vals.begin(), d_B_vals.begin(), d_keys_result.begin(), d_vals_result.begin());
// CHECK-NEXT: dpct::set_symmetric_difference(oneapi::dpl::execution::make_device_policy(q_ct1), d_A_keys.begin(), d_A_keys.end(), d_B_keys.begin(), d_B_keys.end(), d_A_vals.begin(), d_B_vals.begin(), d_keys_result.begin(), d_vals_result.begin());
// CHECK-NEXT: dpct::set_symmetric_difference(oneapi::dpl::execution::make_device_policy(q_ct1), d_A_keys.begin(), d_A_keys.end(), d_B_keys.begin(), d_B_keys.end(), d_A_vals.begin(), d_B_vals.begin(), d_keys_result.begin(), d_vals_result.begin(), Compare());
// CHECK-NEXT: dpct::set_symmetric_difference(oneapi::dpl::execution::make_device_policy(q_ct1), d_A_keys.begin(), d_A_keys.end(), d_B_keys.begin(), d_B_keys.end(), d_A_vals.begin(), d_B_vals.begin(), d_keys_result.begin(), d_vals_result.begin(), Compare());
// CHECK-NEXT: dpct::set_symmetric_difference(oneapi::dpl::execution::seq, h_A_keys.begin(), h_A_keys.end(), h_B_keys.begin(), h_B_keys.end(), h_A_vals.begin(), h_B_vals.begin(), h_keys_result.begin(), h_vals_result.begin());
// CHECK-NEXT: dpct::set_symmetric_difference(oneapi::dpl::execution::seq, h_A_keys.begin(), h_A_keys.end(), h_B_keys.begin(), h_B_keys.end(), h_A_vals.begin(), h_B_vals.begin(), h_keys_result.begin(), h_vals_result.begin());
// CHECK-NEXT: dpct::set_symmetric_difference(oneapi::dpl::execution::seq, h_A_keys.begin(), h_A_keys.end(), h_B_keys.begin(), h_B_keys.end(), h_A_vals.begin(), h_B_vals.begin(), h_keys_result.begin(), h_vals_result.begin(), Compare());
// CHECK-NEXT: dpct::set_symmetric_difference(oneapi::dpl::execution::seq, h_A_keys.begin(), h_A_keys.end(), h_B_keys.begin(), h_B_keys.end(), h_A_vals.begin(), h_B_vals.begin(), h_keys_result.begin(), h_vals_result.begin(), Compare());
thrust::set_symmetric_difference_by_key(thrust::host, A_keys, A_keys + 7, B_keys, B_keys + 5, A_vals, B_vals, keys_result, vals_result);
thrust::set_symmetric_difference_by_key(A_keys, A_keys + 7, B_keys, B_keys + 5, A_vals, B_vals, keys_result, vals_result);
thrust::set_symmetric_difference_by_key(thrust::host, A_keys, A_keys + 7, B_keys, B_keys + 5, A_vals, B_vals, keys_result, vals_result, Compare());
thrust::set_symmetric_difference_by_key(A_keys, A_keys + 7, B_keys, B_keys + 5, A_vals, B_vals, keys_result, vals_result, Compare());
thrust::set_symmetric_difference_by_key(thrust::device, d_A_keys.begin(), d_A_keys.end(), d_B_keys.begin(), d_B_keys.end(), d_A_vals.begin(), d_B_vals.begin(), d_keys_result.begin(), d_vals_result.begin());
thrust::set_symmetric_difference_by_key(d_A_keys.begin(), d_A_keys.end(), d_B_keys.begin(), d_B_keys.end(), d_A_vals.begin(), d_B_vals.begin(), d_keys_result.begin(), d_vals_result.begin());
thrust::set_symmetric_difference_by_key(thrust::device, d_A_keys.begin(), d_A_keys.end(), d_B_keys.begin(), d_B_keys.end(), d_A_vals.begin(), d_B_vals.begin(), d_keys_result.begin(), d_vals_result.begin(), Compare());
thrust::set_symmetric_difference_by_key(d_A_keys.begin(), d_A_keys.end(), d_B_keys.begin(), d_B_keys.end(), d_A_vals.begin(), d_B_vals.begin(), d_keys_result.begin(), d_vals_result.begin(), Compare());
thrust::set_symmetric_difference_by_key(thrust::host, h_A_keys.begin(), h_A_keys.end(), h_B_keys.begin(), h_B_keys.end(), h_A_vals.begin(), h_B_vals.begin(), h_keys_result.begin(), h_vals_result.begin());
thrust::set_symmetric_difference_by_key(h_A_keys.begin(), h_A_keys.end(), h_B_keys.begin(), h_B_keys.end(), h_A_vals.begin(), h_B_vals.begin(), h_keys_result.begin(), h_vals_result.begin());
thrust::set_symmetric_difference_by_key(thrust::host, h_A_keys.begin(), h_A_keys.end(), h_B_keys.begin(), h_B_keys.end(), h_A_vals.begin(), h_B_vals.begin(), h_keys_result.begin(), h_vals_result.begin(), Compare());
thrust::set_symmetric_difference_by_key(h_A_keys.begin(), h_A_keys.end(), h_B_keys.begin(), h_B_keys.end(), h_A_vals.begin(), h_B_vals.begin(), h_keys_result.begin(), h_vals_result.begin(), Compare());
}
81 changes: 81 additions & 0 deletions clang/test/dpct/thrust-algo-raw-ptr-noneusm-part2.cu
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
// UNSUPPORTED: cuda-8.0
// UNSUPPORTED: v8.0
// RUN: dpct --usm-level=none -out-root %T/thrust-algo-raw-ptr-noneusm-part2 %s --cuda-include-path="%cuda-path/include" -- -x cuda --cuda-host-only -std=c++17 -fsized-deallocation
// RUN: FileCheck --input-file %T/thrust-algo-raw-ptr-noneusm-part2/thrust-algo-raw-ptr-noneusm-part2.dp.cpp --match-full-lines %s

#include <thrust/device_malloc.h>
#include <thrust/device_vector.h>
#include <thrust/execution_policy.h>
#include <thrust/host_vector.h>
#include <thrust/set_operations.h>

struct Compare {
__host__ __device__ bool operator()(const int &a, const int &b) {
return a < b;
}
};

void set_symmetric_difference() {
int A1[7] = {0, 1, 2, 2, 4, 6, 7};
int A2[5] = {1, 1, 2, 5, 8};
int result[8];

// CHECK: if (dpct::is_device_ptr(A1)) {
// CHECK-NEXT: oneapi::dpl::set_symmetric_difference(oneapi::dpl::execution::make_device_policy(q_ct1), dpct::device_pointer<int>(A1), dpct::device_pointer<int>(A1 + 4), dpct::device_pointer<int>(A2), dpct::device_pointer<int>(A2 + 2), dpct::device_pointer<int>(result));
// CHECK-NEXT: } else {
// CHECK-NEXT: oneapi::dpl::set_symmetric_difference(oneapi::dpl::execution::seq, A1, A1 + 4, A2, A2 + 2, result);
// CHECK-NEXT: };
// CHECK-NEXT: if (dpct::is_device_ptr(A1)) {
// CHECK-NEXT: oneapi::dpl::set_symmetric_difference(oneapi::dpl::execution::make_device_policy(q_ct1), dpct::device_pointer<int>(A1), dpct::device_pointer<int>(A1 + 4), dpct::device_pointer<int>(A2), dpct::device_pointer<int>(A2 + 2), dpct::device_pointer<int>(result));
// CHECK-NEXT: } else {
// CHECK-NEXT: oneapi::dpl::set_symmetric_difference(oneapi::dpl::execution::seq, A1, A1 + 4, A2, A2 + 2, result);
// CHECK-NEXT: };
// CHECK-NEXT: if (dpct::is_device_ptr(A1)) {
// CHECK-NEXT: oneapi::dpl::set_symmetric_difference(oneapi::dpl::execution::make_device_policy(q_ct1), dpct::device_pointer<int>(A1), dpct::device_pointer<int>(A1 + 5), dpct::device_pointer<int>(A2), dpct::device_pointer<int>(A2 + 5), dpct::device_pointer<int>(result), Compare());
// CHECK-NEXT: } else {
// CHECK-NEXT: oneapi::dpl::set_symmetric_difference(oneapi::dpl::execution::seq, A1, A1 + 5, A2, A2 + 5, result, Compare());
// CHECK-NEXT: };
// CHECK-NEXT: if (dpct::is_device_ptr(A1)) {
// CHECK-NEXT: oneapi::dpl::set_symmetric_difference(oneapi::dpl::execution::make_device_policy(q_ct1), dpct::device_pointer<int>(A1), dpct::device_pointer<int>(A1 + 5), dpct::device_pointer<int>(A2), dpct::device_pointer<int>(A2 + 5), dpct::device_pointer<int>(result), Compare());
// CHECK-NEXT: } else {
// CHECK-NEXT: oneapi::dpl::set_symmetric_difference(oneapi::dpl::execution::seq, A1, A1 + 5, A2, A2 + 5, result, Compare());
// CHECK-NEXT: };
thrust::set_symmetric_difference(thrust::host, A1, A1 + 4, A2, A2 + 2, result);
thrust::set_symmetric_difference(A1, A1 + 4, A2, A2 + 2, result);
thrust::set_symmetric_difference(thrust::host, A1, A1 + 5, A2, A2 + 5, result, Compare());
thrust::set_symmetric_difference(A1, A1 + 5, A2, A2 + 5, result, Compare());
}

void set_symmetric_difference_by_key() {
int A_keys[7] = {0, 1, 2, 2, 4, 6, 7};
int A_vals[7] = {0, 0, 0, 0, 0, 0, 0};
int B_keys[5] = {1, 1, 2, 5, 8};
int B_vals[5] = {1, 1, 1, 1, 1};
int keys_result[8];
int vals_result[8];

// CHECK: if (dpct::is_device_ptr(A_keys)) {
// CHECK-NEXT: dpct::set_symmetric_difference(oneapi::dpl::execution::make_device_policy(q_ct1), dpct::device_pointer<int>(A_keys), dpct::device_pointer<int>(A_keys + 7), dpct::device_pointer<int>(B_keys), dpct::device_pointer<int>(B_keys + 5), dpct::device_pointer<int>(A_vals), dpct::device_pointer<int>(B_vals), dpct::device_pointer<int>(keys_result), dpct::device_pointer<int>(vals_result));
// CHECK-NEXT: } else {
// CHECK-NEXT: dpct::set_symmetric_difference(oneapi::dpl::execution::seq, A_keys, A_keys + 7, B_keys, B_keys + 5, A_vals, B_vals, keys_result, vals_result);
// CHECK-NEXT: };
// CHECK-NEXT: if (dpct::is_device_ptr(A_keys)) {
// CHECK-NEXT: dpct::set_symmetric_difference(oneapi::dpl::execution::make_device_policy(q_ct1), dpct::device_pointer<int>(A_keys), dpct::device_pointer<int>(A_keys + 7), dpct::device_pointer<int>(B_keys), dpct::device_pointer<int>(B_keys + 5), dpct::device_pointer<int>(A_vals), dpct::device_pointer<int>(B_vals), dpct::device_pointer<int>(keys_result), dpct::device_pointer<int>(vals_result));
// CHECK-NEXT: } else {
// CHECK-NEXT: dpct::set_symmetric_difference(oneapi::dpl::execution::seq, A_keys, A_keys + 7, B_keys, B_keys + 5, A_vals, B_vals, keys_result, vals_result);
// CHECK-NEXT: };
// CHECK-NEXT: if (dpct::is_device_ptr(A_keys)) {
// CHECK-NEXT: dpct::set_symmetric_difference(oneapi::dpl::execution::make_device_policy(q_ct1), dpct::device_pointer<int>(A_keys), dpct::device_pointer<int>(A_keys + 7), dpct::device_pointer<int>(B_keys), dpct::device_pointer<int>(B_keys + 5), dpct::device_pointer<int>(A_vals), dpct::device_pointer<int>(B_vals), dpct::device_pointer<int>(keys_result), dpct::device_pointer<int>(vals_result), Compare());
// CHECK-NEXT: } else {
// CHECK-NEXT: dpct::set_symmetric_difference(oneapi::dpl::execution::seq, A_keys, A_keys + 7, B_keys, B_keys + 5, A_vals, B_vals, keys_result, vals_result, Compare());
// CHECK-NEXT: };
// CHECK-NEXT: if (dpct::is_device_ptr(A_keys)) {
// CHECK-NEXT: dpct::set_symmetric_difference(oneapi::dpl::execution::make_device_policy(q_ct1), dpct::device_pointer<int>(A_keys), dpct::device_pointer<int>(A_keys + 7), dpct::device_pointer<int>(B_keys), dpct::device_pointer<int>(B_keys + 5), dpct::device_pointer<int>(A_vals), dpct::device_pointer<int>(B_vals), dpct::device_pointer<int>(keys_result), dpct::device_pointer<int>(vals_result), Compare());
// CHECK-NEXT: } else {
// CHECK-NEXT: dpct::set_symmetric_difference(oneapi::dpl::execution::seq, A_keys, A_keys + 7, B_keys, B_keys + 5, A_vals, B_vals, keys_result, vals_result, Compare());
// CHECK-NEXT: };
thrust::set_symmetric_difference_by_key(thrust::host, A_keys, A_keys + 7, B_keys, B_keys + 5, A_vals, B_vals, keys_result, vals_result);
thrust::set_symmetric_difference_by_key(A_keys, A_keys + 7, B_keys, B_keys + 5, A_vals, B_vals, keys_result, vals_result);
thrust::set_symmetric_difference_by_key(thrust::host, A_keys, A_keys + 7, B_keys, B_keys + 5, A_vals, B_vals, keys_result, vals_result, Compare());
thrust::set_symmetric_difference_by_key(A_keys, A_keys + 7, B_keys, B_keys + 5, A_vals, B_vals, keys_result, vals_result, Compare());
}

0 comments on commit a2f86be

Please sign in to comment.