blob: c5c2a1d83680dd282e2b1a555055737649ef9496 [file]
// clang-format off
// RUN: %clang++ %flags -foffload-via-llvm --offload-arch=native %s -o %t
// RUN: %t | %fcheck-generic
// RUN: %clang++ %flags -foffload-via-llvm --offload-arch=native %s -o %t -fopenmp
// RUN: %t | %fcheck-generic
// clang-format on
// UNSUPPORTED: aarch64-unknown-linux-gnu
// UNSUPPORTED: x86_64-unknown-linux-gnu
// UNSUPPORTED: nvptx64-nvidia-cuda-LTO
// UNSUPPORTED: amdgcn-amd-amdhsa-LTO
// UNSUPPORTED: amdgpu-amd-amdhsa-LTO
// UNSUPPORTED: intelgpu
#include <stdio.h>
static void print_error(const char *Label, cudaError_t Error) {
printf("%s value: %u\n", Label, static_cast<unsigned>(Error));
printf("%s name: %s\n", Label, cudaGetErrorName(Error));
printf("%s string: %s\n", Label, cudaGetErrorString(Error));
}
int main() {
print_error("success", cudaSuccess);
// CHECK: success value: 0
// CHECK: success name: cudaSuccess
// CHECK: success string: No error
print_error("invalid value", cudaErrorInvalidValue);
// CHECK: invalid value value: 1
// CHECK: invalid value name: cudaErrorInvalidValue
// CHECK: invalid value string: Invalid argument value
print_error("invalid device", cudaErrorInvalidDevice);
// CHECK: invalid device value: 2
// CHECK: invalid device name: cudaErrorInvalidDevice
// CHECK: invalid device string: Invalid device number
print_error("unknown", cudaErrorUnknown);
// CHECK: unknown value: 3
// CHECK: unknown name: Unrecognized error
// CHECK: unknown string: Unknown error
print_error("invalid resource handle", cudaErrorInvalidResourceHandle);
// CHECK: invalid resource handle value: 4
// CHECK: invalid resource handle name: cudaErrorInvalidResourceHandle
// CHECK: invalid resource handle string: Invalid resource handle
print_error("invalid configuration", cudaErrorInvalidConfiguration);
// CHECK: invalid configuration value: 5
// CHECK: invalid configuration name: cudaErrorInvalidConfiguration
// CHECK: invalid configuration string: Invalid configuration argument
cudaError_t Unrecognized = static_cast<cudaError_t>(999);
print_error("unrecognized", Unrecognized);
// CHECK: unrecognized value: 999
// CHECK: unrecognized name: Unrecognized error
// CHECK: unrecognized string: Unrecognized error
print_error("set invalid device", cudaSetDevice(-1));
// CHECK: set invalid device value: 2
// CHECK: set invalid device name: cudaErrorInvalidDevice
// CHECK: set invalid device string: Invalid device number
print_error("get last error", cudaGetLastError());
// CHECK: get last error value: 2
// CHECK: get last error name: cudaErrorInvalidDevice
// CHECK: get last error string: Invalid device number
print_error("cleared last error", cudaGetLastError());
// CHECK: cleared last error value: 0
// CHECK: cleared last error name: cudaSuccess
// CHECK: cleared last error string: No error
print_error("null stream destroy", cudaStreamDestroy(nullptr));
// CHECK: null stream destroy value: 1
// CHECK: null stream destroy name: cudaErrorInvalidValue
// CHECK: null stream destroy string: Invalid argument value
return 0;
}