Skip to content
Open
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
69 changes: 69 additions & 0 deletions offload/test/offloading/interop-print.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
// RUN: %libomptarget-compile-amdgcn-amd-amdhsa
// RUN: %libomptarget-run-generic 2>&1 | \
// RUN: %fcheck-generic -check-prefix=AMDCHECK

// REQUIRES: amdgpu

#include <omp.h>
#include <stdio.h>

const char *interop_int_to_string(const int interop_int) {
switch (interop_int) {
case 1:
return "cuda";
case 2:
return "cuda_driver";
case 3:
return "opencl";
case 4:
return "sycl";
case 5:
return "hip";
case 6:
return "level_zero";
case 7:
return "hsa";
default:
return "unknown";
}
}

int main(int argc, char **argv) {
omp_interop_t iobj = omp_interop_none;
#pragma omp interop init(targetsync : iobj)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Given the usage in this test, I think it should of type target not targetsync:

Suggested change
#pragma omp interop init(targetsync : iobj)
#pragma omp interop init(target : iobj)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

making this change gives me a seg fault during execution


int err;
int interop_int = omp_get_interop_int(iobj, omp_ipr_fr_id, &err);

if (err) {
fprintf(stderr, "omp_get_interop_int failed: %d\n", err);
return -1;
}

// AMDCHECK: {{.*}} hsa
printf("omp_get_interop_int returned %s\n",
interop_int_to_string(interop_int));

const char *interop_vendor =
omp_get_interop_str(iobj, omp_ipr_vendor_name, &err);
if (err) {
fprintf(stderr, "omp_get_interop_str failed: %d\n", err);
return -1;
}

// AMDCHECK: {{.*}} amd
printf("omp_get_interop_str returned %s\n", interop_vendor);

const char *interop_fr_name =
omp_get_interop_str(iobj, omp_ipr_fr_name, &err);
if (err) {
fprintf(stderr, "omp_get_interop_str failed: %d\n", err);
return -1;
}

// AMDCHECK: {{.*}} hsa
printf("omp_get_interop_str returned %s\n", interop_fr_name);

#pragma omp interop destroy(iobj)
return 0;
}
Loading