llvm-project

Форк
0
/
declare_mapper_target_data.cpp 
35 строк · 618.0 Байт
1
// RUN: %libomptarget-compile-run-and-check-generic
2

3
#include <cstdio>
4
#include <cstdlib>
5

6
#define NUM 1024
7

8
class C {
9
public:
10
  int *a;
11
};
12

13
#pragma omp declare mapper(id : C s) map(s.a[0 : NUM])
14

15
int main() {
16
  C c;
17
  c.a = (int *)malloc(sizeof(int) * NUM);
18
  for (int i = 0; i < NUM; i++) {
19
    c.a[i] = 1;
20
  }
21
#pragma omp target data map(mapper(id), tofrom : c)
22
  {
23
#pragma omp target teams distribute parallel for
24
    for (int i = 0; i < NUM; i++) {
25
      ++c.a[i];
26
    }
27
  }
28
  int sum = 0;
29
  for (int i = 0; i < NUM; i++) {
30
    sum += c.a[i];
31
  }
32
  // CHECK: Sum = 2048
33
  printf("Sum = %d\n", sum);
34
  return 0;
35
}
36

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.