On 05.05.22 10:30, Jakub Jelinek via Fortran wrote:
+ memcpy_t *a = args; + int ret = omp_target_memcpy_copy (a->dst, a->src, a->length, a->dst_offset, + a->src_offset, a->dst_devicep, + a->src_devicep); + if (ret) + gomp_fatal ("asynchronous memcpy failed");
I wonder whether that should be 'omp_target_memcpy_async failed' or similar to make clear that it comes from a user's API call. Or "asynchronous memcpy API routine failed" to avoid a bit the issue of ...memcpy_async vs. ..._memcpy_rect_aysnc?
I'm not really sure killing the whole program if the copying failed is the best action. Has it been discussed on omp-lang? Perhaps the APIs should have a way how to propagate the result to the caller when it completes somehow?
I think it hasn't been discussed – but the question is how to handle it best with the current API. Namely, should it simply continue at the taskwait? Having some way to communicate back that it failed would be useful – either by a by-reference argument or some other more indirect means. I think aborting it bad – but not aborting and silently continuing is likely to break as well. IMO, we the fatal is fine for now, but we might need to come up with something on the spec side. Tobias ----------------- Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstraße 201, 80634 München; Gesellschaft mit beschränkter Haftung; Geschäftsführer: Thomas Heurung, Frank Thürauf; Sitz der Gesellschaft: München; Registergericht München, HRB 106955