Prefer to read without ads? Become a member — from $10/month — and support the work. Already a member? Log in to read ad-free on this device.

6.11 Source Code Reference

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.