Closed fknorr closed 1 month ago
Check-perf-impact results: (7b849de16ff11660b98988ab0b032db7)
:question: No new benchmark data submitted. :question:
Please re-run the microbenchmarks and include the results if your commit could potentially affect performance.
Totals | |
---|---|
Change from base Build 9661291153: | -0.04% |
Covered Lines: | 7107 |
Relevant Lines: | 7321 |
I've moved copy-layout generation logic to a separate header so I can re-use it in device copy tests. It doesn't use GENERATE
to avoid creating thousands of host / device allocations in those tests.
Totals | |
---|---|
Change from base Build 9661291153: | -0.02% |
Covered Lines: | 7108 |
Relevant Lines: | 7321 |
Files with Coverage Reduction | New Missed Lines | % | ||
---|---|---|---|---|
include/grid.h | 1 | 96.74% | ||
<!-- | Total: | 1 | --> |
Totals | |
---|---|
Change from base Build 9943555988: | -0.06% |
Covered Lines: | 7116 |
Relevant Lines: | 7315 |
This PR proposes to merge the nd-memory copy layouting mechanism used by the IDAG executor. It is set to replace
memcpy_strided_host
and the host-side portion ofmemcpy_strided_device
that is currently implemented inbuffer_storage
.Unlike the current implementation, it always detects when a copy between higher-dimensional allocations is "accidentally contiguous" (i.e. can fulfilled by a single memcpy) or when a copy between 3D allocations is "accidentally 2D". The unit contains a full implementation of host-to-host copies (which perform the minimum number of memcpys possible) and the means to implement optimized dispatch to
cudaMemcpy*D
(for this, see cuda_backend.cc in the IDAG branch).