A work in progress to implement the code from OpenCL in Action by Matthew Scarpino in pyopencl
- Chapter 3: Host programming - data transfer and partitioning
- Listing 3.2: Reading rectangular buffer data
- Listing 3.3: Copying and mapping buffer objects (enqueue_map_buffer)
- Chapter 4: Kernel programming - data types and device memory
- Listing 4.2: Checking for the double data type (fp64)
- Listing 4.3: Testing a device’s floating-point features
- Chapter 5: Kernel programming - operators and functions
- Listing 5.1: Operator usage (and vector usage)
- Listing 5.2: Testing work-item/work-group IDs
- Listing 5.3: Division and rounding
- Listing 5.4: Rectilinear to polar coordinates
- Listing 5.5: Multiply-and-add large numbers
- Listing 5.6: Shuffling vector components
- Listing 5.7: Selecting component content
- Chapter 6: Image processing
- Listing 6.1: Simple image processing
- Listing 6.2: Image interpolation
- Chapter 7: Events, profiling and synchronization
- Listing 7.2: Host notification
- Listing 7.3: Stalling commands with user events (host events)
- Listing 7.6: Profiling data transfer
- Listing 7.7: Profiling data partitioning
- Listing 7.8: Testing atomic operations
- Listing 7.9: Mutex-based synchronization
- Chapter 10: General coding principles
- Listing 10.1: Obtaining kernel/device information
- Listing 10.2: Reduction using scalars
- Listing 10.3: Reduction using vectors
- Listing 10.4: Computing the final reduction (multiple passes over the data)
- Chapter 11: Reduction and sorting
- Listing 11.1: Implementing MapReduce in OpenCL (vectorized string searching)
- Listing 11.2: An eight-element bitonic sort
- Listing 11.3: A general bitonic sort
- Listing 11.4: An eight-element radix sort
- Chapter 14: Signal processing and the fast Fourier transform
- Listing 14.1: The discrete Fourier transform (for real numbers)
- Listing 14.2: The fast Fourier transform and inverse fourier transform