The 'bug49779.cpp' test has been failing recently. This is because the runtime is sufficiently complex when using nested parallelism without optimizations that the CUDA tools cannot statically determine the stack size. Because of this the kernel can exceed the thread stack size and crash. Work around this using the 'LIBOMPTARGET_STACK_SIZE' environment variable and add an FAQ entry for this situation. Fixes #53670 Reviewed By: Meinersbur Differential Revision: https://reviews.llvm.org/D119357
37 lines
563 B
C++
37 lines
563 B
C++
// RUN: %libomptarget-compilexx-generic && \
|
|
// RUN: env LIBOMPTARGET_STACK_SIZE=2048 %libomptarget-run-generic
|
|
|
|
// UNSUPPORTED: amdgcn-amd-amdhsa
|
|
// UNSUPPORTED: amdgcn-amd-amdhsa-newDriver
|
|
|
|
#include <cassert>
|
|
#include <iostream>
|
|
|
|
void work(int *C) {
|
|
#pragma omp atomic
|
|
++(*C);
|
|
}
|
|
|
|
void use(int *C) {
|
|
#pragma omp parallel num_threads(2)
|
|
work(C);
|
|
}
|
|
|
|
int main() {
|
|
int C = 0;
|
|
#pragma omp target map(C)
|
|
{
|
|
use(&C);
|
|
#pragma omp parallel num_threads(2)
|
|
use(&C);
|
|
}
|
|
|
|
assert(C >= 2 && C <= 6);
|
|
|
|
std::cout << "PASS\n";
|
|
|
|
return 0;
|
|
}
|
|
|
|
// CHECK: PASS
|