Hi Chung-Lin! A little bit of documentation starter update for you to include. Please make sure that all relevant functions have such comments addded.
commit 7e0896281d155e1544751f43c1eaace8e005e019 Author: Thomas Schwinge <tho...@codesourcery.com> Date: Thu Dec 13 17:59:46 2018 +0100 [WIP] into async re-work: documentation --- libgomp/libgomp.h | 3 +++ libgomp/oacc-async.c | 7 +++++++ libgomp/plugin/plugin-nvptx.c | 4 ++-- libgomp/target.c | 3 +++ 4 files changed, 15 insertions(+), 2 deletions(-) diff --git libgomp/libgomp.h libgomp/libgomp.h index 8b74d6368389..574fcd1ee4ad 100644 --- libgomp/libgomp.h +++ libgomp/libgomp.h @@ -949,6 +949,9 @@ typedef struct acc_dispatch_t __typeof (GOMP_OFFLOAD_openacc_exec) *exec_func; struct { + /* Once created and put into the "active" list, asyncqueues are then never + destructed and removed from the "active" list, other than if the TODO + device is shut down. */ gomp_mutex_t lock; int nasyncqueue; struct goacc_asyncqueue **asyncqueue; diff --git libgomp/oacc-async.c libgomp/oacc-async.c index b091ba2460ac..0f5f74bdf836 100644 --- libgomp/oacc-async.c +++ libgomp/oacc-async.c @@ -280,6 +280,10 @@ goacc_async_free (struct gomp_device_descr *devicep, devicep->openacc.async.queue_callback_func (aq, free, ptr); } +/* This function initializes the asyncqueues for the device specified by + DEVICEP. TODO DEVICEP must be locked on entry, and remains locked on + return. */ + attribute_hidden void goacc_init_asyncqueues (struct gomp_device_descr *devicep) { @@ -289,6 +293,9 @@ goacc_init_asyncqueues (struct gomp_device_descr *devicep) devicep->openacc.async.active = NULL; } +/* This function finalizes the asyncqueues for the device specified by DEVICEP. + TODO DEVICEP must be locked on entry, and remains locked on return. */ + attribute_hidden bool goacc_fini_asyncqueues (struct gomp_device_descr *devicep) { diff --git libgomp/plugin/plugin-nvptx.c libgomp/plugin/plugin-nvptx.c index 7b658264b8e7..577ed39ef3f6 100644 --- libgomp/plugin/plugin-nvptx.c +++ libgomp/plugin/plugin-nvptx.c @@ -1340,14 +1340,14 @@ GOMP_OFFLOAD_openacc_cuda_get_current_context (void) return nvptx_get_current_cuda_context (); } -/* NOTE: This returns a CUstream, not a ptx_stream pointer. */ +/* This returns a CUstream. */ void * GOMP_OFFLOAD_openacc_cuda_get_stream (struct goacc_asyncqueue *aq) { return (void *) aq->cuda_stream; } -/* NOTE: This takes a CUstream, not a ptx_stream pointer. */ +/* This takes a CUstream. */ int GOMP_OFFLOAD_openacc_cuda_set_stream (struct goacc_asyncqueue *aq, void *stream) { diff --git libgomp/target.c libgomp/target.c index e67d9248ae0b..96df1890a729 100644 --- libgomp/target.c +++ libgomp/target.c @@ -1506,6 +1506,9 @@ gomp_init_device (struct gomp_device_descr *devicep) devicep->state = GOMP_DEVICE_INITIALIZED; } +/* This function finalizes the target device, specified by DEVICEP. DEVICEP + must be locked on entry, and remains locked on return. */ + attribute_hidden bool gomp_fini_device (struct gomp_device_descr *devicep) { Grüße Thomas