| /* Verify that 'acc_map_data' does not copy data to, and 'acc_unmap_data' does |
| not copy data from the device. */ |
| |
| /* { dg-skip-if "" { *-*-* } { "*" } { "-DACC_MEM_SHARED=0" } } */ |
| |
| #include <stdlib.h> |
| #include <string.h> |
| #include <openacc.h> |
| |
| int |
| main () |
| { |
| const int c0 = 9; |
| const int c1 = 40; |
| const int c2 = 47; |
| |
| const size_t N = 256; |
| |
| unsigned char *h = (unsigned char *) malloc (N); |
| |
| void *d = acc_malloc (N); |
| |
| memset (h, c0, N); // H <- c0 |
| acc_memcpy_to_device (d, h, N); // D <- H = c0 |
| |
| memset (h, c1, N); // H <- c1 |
| acc_map_data (h, d, N); |
| for (size_t i = 0; i < N; ++i) |
| if (h[i] != c1) |
| abort (); |
| |
| acc_memcpy_from_device (h, d, N); // H <- D = c0 |
| for (size_t i = 0; i < N; ++i) |
| if (h[i] != c0) |
| abort (); |
| |
| memset (h, c2, N); // H <- c2 |
| acc_unmap_data (h); |
| for (size_t i = 0; i < N; ++i) |
| if (h[i] != c2) |
| abort (); |
| |
| acc_memcpy_from_device (h, d, N); // H <- D = c0 |
| for (size_t i = 0; i < N; ++i) |
| if (h[i] != c0) |
| abort (); |
| |
| acc_free (d); |
| |
| free (h); |
| |
| return 0; |
| } |