brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.0 KiB · 5b54912 Raw
42 lines · cpp
1// RUN: %libomptarget-compilexx-run-and-check-generic2 3#include <omp.h>4#include <ompx.h>5#include <stdio.h>6 7void foo(int device) {8  int tid = 0, bid = 0, bdim = 0;9#pragma omp target teams distribute parallel for map(from                      \10                                                     : tid, bid, bdim)         \11    device(device) thread_limit(2) num_teams(5)12  for (int i = 0; i < 1000; ++i) {13    if (i == 42) {14      tid = ompx::block_dim_x();15      bid = ompx::block_id_x();16      bdim = ompx::grid_dim_x();17    }18  }19  // CHECK: tid: 2, bid: 1, bdim: 520  // CHECK: tid: 2, bid: 0, bdim: 121  printf("tid: %i, bid: %i, bdim: %i\n", tid, bid, bdim);22}23 24int isGPU() { return 0; }25#pragma omp declare variant(isGPU) match(device = {kind(gpu)})26int isGPUvariant() { return 1; }27 28int defaultIsGPU() {29  int r = 0;30#pragma omp target map(from : r)31  r = isGPU();32  return r;33}34 35int main() {36  if (defaultIsGPU())37    foo(omp_get_default_device());38  else39    printf("tid: 2, bid: 1, bdim: 5\n");40  foo(omp_get_initial_device());41}42