|
| subroutine | gs_device_crystal::gs_device_crystal_init (this, send_pe, recv_pe) |
| | Initialise crystal router based device communication See gs_comm.f90 for details.
|
| |
| subroutine | gs_device_crystal::gs_device_crystal_free (this) |
| | Deallocate crystal router based device communication.
|
| |
| subroutine | gs_device_crystal::gs_device_crystal_nbrecv (this, tag) |
| | Post the receives of the first routing stage.
|
| |
| subroutine | gs_device_crystal::gs_device_crystal_nbsend (this, u, n, tag, deps, strm) |
| | Pack the shared vector and post the send of the first routing stage.
|
| |
| subroutine | gs_device_crystal::gs_device_crystal_nbwait (this, u, n, op, strm) |
| | Drive the remaining routing stages and reduce what is delivered into the shared vector.
|
| |
| subroutine | gs_device_crystal::gs_device_crystal_nbrecv_vec (this, tag, nc) |
| | Post the receives of the first routing stage, fused nc-component.
|
| |
| subroutine | gs_device_crystal::gs_device_crystal_nbsend_vec (this, u, n, nc, tag, deps, strm) |
| | Pack the shared vector and post the send of the first routing stage, fused nc-component.
|
| |
| subroutine | gs_device_crystal::gs_device_crystal_nbwait_vec (this, u, n, nc, op, strm) |
| | Drive the remaining routing stages and reduce what is delivered into the shared vector, fused nc-component.
|
| |
| subroutine | gs_device_crystal::cr_gather (src_d, dst_d, idx_d, n, strm) |
| | Gather n words of src into dst through the 1-based index list idx_d, i.e. dst(j) = src(idx(j))
|
| |
| subroutine | gs_device_crystal::cr_gather_vec (src_d, dst_d, idx_d, n, nc, ns, strm) |
| | Gather n positions of the component-outer src (stride ns) into the interleaved dst.
|
| |
| subroutine | gs_device_crystal::cr_scatter (u_d, op, buf_d, idx_d, n, strm) |
| | Reduce n delivered words into the shared vector under op.
|
| |
| subroutine | gs_device_crystal::cr_scatter_vec (u_d, op, buf_d, idx_d, n, nc, ns, strm) |
| | Reduce n delivered positions into the component-outer shared vector.
|
| |
| subroutine | gs_device_crystal::cr_vec_index (this, nc) |
| | Build the per-stage index lists of the fused vector exchange, which address the same words as the scalar ones with the components spelled out: position p of a stage becomes nc*(p-1) + 1 .. nc*p.
|
| |
| subroutine | gs_device_crystal::cr_expand (idx, n, nc, out) |
| | Spell out the components of the 1-based index list idx over nc.
|
| |
| subroutine | gs_device_crystal::cr_upload (ptr, idx, n) |
| | Copy the first n entries of an index list to the device, leaving ptr null when there are none.
|
| |
| subroutine | gs_device_crystal::cr_free_ptrs (ptrs) |
| | Release a list of device pointers, leaving them null.
|
| |
| subroutine | gs_device_crystal::cr_mark_dupes (dof, out, n) |
| | Copy dof into out, negating every index that appears more than once so that the unpack kernel reduces those atomically.
|
| |