From e5c47bdc37f9c258655448bb05dbdb23c1c187d2 Mon Sep 17 00:00:00 2001 From: Raymundo Escobar Date: Wed, 12 Jun 2024 19:40:48 +0000 Subject: [PATCH 1/3] Target Update To From LValue Pointer --- .../test_target_update_to_from_lvalue_ptr.cpp | 64 +++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 tests/5.0/target/test_target_update_to_from_lvalue_ptr.cpp diff --git a/tests/5.0/target/test_target_update_to_from_lvalue_ptr.cpp b/tests/5.0/target/test_target_update_to_from_lvalue_ptr.cpp new file mode 100644 index 000000000..2b91928aa --- /dev/null +++ b/tests/5.0/target/test_target_update_to_from_lvalue_ptr.cpp @@ -0,0 +1,64 @@ +//===------ test_target_update_to_from_map_lvalue_pointer.cpp ----------------===// +// +// OpenMP API Version 5.0 Nov 2018 +// +// Tests the target update directive with to and from clauses supporting more +// lvalue expressions +//===----------------------------------------------------------------------===// + +#include +#include +#include "ompvv.h" + +int test_target_update() { + int errors = 0; + int before_value; + int after_value; + int* host_pointer = new int; + *host_pointer = -1; + + #pragma omp target enter data map(to: *host_pointer) + + //Before should be set to -1 + #pragma omp target map(from: before_value) + { + before_value = *host_pointer; + } + + //Host_pointer should now be 1 + *host_pointer = 1; + // Copy data from the host variable to the device variable using a dereferenced pointer + #pragma omp target update to(*host_pointer) + + #pragma omp target map(from: after_value) + { + after_value = *host_pointer; + *host_pointer = 2; + } + + //Update host_pointer to 2 + #pragma omp target update from(*host_pointer) + + // Verify the results + if (*host_pointer != 2) { + errors++; + } + if (before_value != -1){ + errors++; + } + if (after_value != 1){ + errors++; + } + OMPVV_TEST_AND_SET(errors, errors != 0); + return errors; +} + +int main() { + OMPVV_TEST_OFFLOADING; + int errors = 0; + + OMPVV_TEST_AND_SET_VERBOSE(errors, test_target_update() != 0); + + OMPVV_REPORT_AND_RETURN(errors); +} + From da97646f90942f8ac17f96182c84c6572756c75d Mon Sep 17 00:00:00 2001 From: Raymundo Escobar Date: Thu, 13 Jun 2024 17:52:45 +0000 Subject: [PATCH 2/3] Added Exit Data --- tests/5.0/target/test_target_update_to_from_lvalue_ptr.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tests/5.0/target/test_target_update_to_from_lvalue_ptr.cpp b/tests/5.0/target/test_target_update_to_from_lvalue_ptr.cpp index 2b91928aa..1b06c9509 100644 --- a/tests/5.0/target/test_target_update_to_from_lvalue_ptr.cpp +++ b/tests/5.0/target/test_target_update_to_from_lvalue_ptr.cpp @@ -49,6 +49,10 @@ int test_target_update() { if (after_value != 1){ errors++; } + + #pragma omp target exit data map(from: *host_pointer) + delete host_pointer; + OMPVV_TEST_AND_SET(errors, errors != 0); return errors; } From 6bd95c1b3fe17185498cc716978c05d9fcc88159 Mon Sep 17 00:00:00 2001 From: Raymundo Escobar Date: Mon, 17 Jun 2024 17:22:53 +0000 Subject: [PATCH 3/3] fixed description to add map clause --- tests/5.0/target/test_target_update_to_from_lvalue_ptr.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/tests/5.0/target/test_target_update_to_from_lvalue_ptr.cpp b/tests/5.0/target/test_target_update_to_from_lvalue_ptr.cpp index 1b06c9509..4d4a5260d 100644 --- a/tests/5.0/target/test_target_update_to_from_lvalue_ptr.cpp +++ b/tests/5.0/target/test_target_update_to_from_lvalue_ptr.cpp @@ -2,9 +2,10 @@ // // OpenMP API Version 5.0 Nov 2018 // -// Tests the target update directive with to and from clauses supporting more -// lvalue expressions -//===----------------------------------------------------------------------===// +// This test evaluates the target update directive using to and from clauses, +// supporting various lvalue expressions, such as dereferenced pointers. +// Additionally, it examines the map clause and its handling of lvalue expressions +//===------------------------------------------------------------------------===// #include #include