Quantitative Analysis
Parallel Processing
Numerical Analysis
C++ Multithreading
Python for Excel
Python Utilities

I. Introduction into GPU programming.
II. Exception safe dynamic memory handling in Cuda project.
1. Allocating and deallocating device memory. ots::cuda::memory::Device class.
2. Accessing device memory. ots::cuda::memory::Host class.
3. Crossing host/device boundary. ots::cuda::memory::DeviceHandler class.
4. Accessing memory in __device__ code. ots::cuda::memory::Block class.
5. Handling two dimensional memory blocks. Do not use cudaMallocPitch.
6. Allocation of memory from Host scope.
7. Tagged data. Compiler assisted data verification.
III. Calculation of partial sums in parallel.
IV. Manipulation of piecewise polynomial functions in parallel.
V. Manipulation of localized piecewise polynomial functions in parallel.
Downloads. Index. Contents.

Tagged data. Compiler assisted data verification.

t is well known that mathematicians run out of letters in three alphabets when describing any non trivial procedure of practical significance. The problem is especially apparent when coding any such procedure. One usually supplies dozens of arguments of the same type (array of doubles or integers) holding similar data into dozens of function calls. If one permutes any pair of arguments by mistake then a subtle and time consuming error results.

The "tagged" classes in the files *Tag_*.hpp in the OTSProjects/ots/cuda address this problem. The idea is to decorate every data holder into a separate type with exactly the same functionality. This way there are no complications in the functional code but the compiler verifies correct sequencing of the arguments.

Downloads. Index. Contents.

Copyright 2007