The source code referenced in this chapter resides in the concurrency directory.
| Filename | Description |
|---|---|
breakevenDtoHMemcpy.cu |
Measures the size of an asynchronous device->host memcpy before the amount of data copied “breaks even” with the driver overhead. |
breakevenHtoDMemcpy.cu |
Measures the size of an asynchronous host->device memcpy before the amount of data copied “breaks even” with the driver overhead. |
breakevenKernelAsync.cu |
Measures the amount of work a kernel must do to “break even” with the driver overhead. |
concurrencyKernelKernel.cu |
Measures kernel-kernel concurrency within one GPU. |
concurrencyKernelMapped.cu |
Measures relative speed of concurrent memcpy/kernel processing using mapped pinned memory as compared to streams. |
concurrencyMemcpyKernel.cu |
Measures speedup due to concurrent memcpy and kernel processing, for different amounts of work done by the kernel. |
concurrencyMemcpyKernelMapped.cu |
Measures speedup due to kernels running concurrently using mapped pinned memory. |
memcpy16.cpp |
SSE-optimized memcpy routine. |
nullDtoHMemcpyAsync.cu |
Measures throughput of one-byte asynchronous device->host memcpy’s. |
nullDtoHMemcpySync.cu |
Measures throughput of one-byte synchronous device->host memcpy’s. |
nullHtoDMemcpyAsync.cu |
Measures throughput of one-byte asynchronous host->device memcpy’s. |
nullKernelAsync.cu |
Measures throughput of asynchronous kernel launches. |
nullKernelAsyncGraph.cu |
Measures per-launch CPU time when a run of
null kernels is dispatched as one launch of a captured, instantiated
graph (compare nullKernelAsync.cu). |
nullKernelSync.cu |
Measures throughput of synchronous kernel launches. |
pageableMemcpyHtoD.cu |
Illustrative example of pageable memcpy routine using standard CUDA programming constructions. Uses memcpy |
pageableMemcpyHtoD16.cu |
Illustrative example of pageable memcpy routine using standard CUDA programming constructions. |
pageableMemcpyHtoD16Blocking.cu |
Identical to
pageableMemcpyHtoD16.cu, but uses blocking events for
synchronization. |
pageableMemcpyHtoD16Broken.cu |
Identical to
pageableMemcpyHtoD16.cu, with the event synchronization
removed. |
pageableMemcpyHtoD16Synchronous.cu |
Identical to
pageableMemcpyHtoD16.cu, but with the event synchronization
in a subtly different place that breaks CPU/GPU concurrency. |
peer2peerMemcpy.cu |
Peer-to-peer memcpy that stages through portable pinned buffers. |