Finalizes a multiplication cycle for a set of C-blocks.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(dbcsr_mm_accdrv_type), | intent(inout) | :: | this |
SUBROUTINE dbcsr_mm_accdrv_finalize(this) !! Finalizes a multiplication cycle for a set of C-blocks. TYPE(dbcsr_mm_accdrv_type), INTENT(INOUT) :: this TYPE(dbcsr_data_obj) :: c_area ! Transfer C-data from device to host and adding it to host's result IF (this%c_area_copy) THEN CALL dbcsr_data_dev2host(this%c_buffer) END IF CALL acc_stream_synchronize(this%c_buffer%d%memory_type%acc_stream) c_area = this%product_wm%data_area IF (this%keep_product_data .OR. this%do_gpu_c_redux .OR. this%nlayers .GT. 1) THEN CALL block_add(c_area, this%c_buffer) CALL dbcsr_data_release(this%c_buffer) ELSE CALL dbcsr_data_release(this%product_wm%data_area) this%product_wm%data_area = this%c_buffer END IF END SUBROUTINE dbcsr_mm_accdrv_finalize