diff --git a/doc/index.rst b/doc/index.rst index 7e95d502560a34829eaa7f450d0d16a0222276c6..cfa9d02c0385786ae4f837a6893f56bc610246f8 100644 --- a/doc/index.rst +++ b/doc/index.rst @@ -6,13 +6,13 @@ PyOpenCL gives you easy, Pythonic access to the `OpenCL What makes PyOpenCL special? * Object cleanup tied to lifetime of objects. This idiom, - often called + often called `RAII <http://en.wikipedia.org/wiki/Resource_Acquisition_Is_Initialization>`_ in C++, makes it much easier to write correct, leak- and crash-free code. * Completeness. PyOpenCL puts the full power of OpenCL's API at your - disposal, if you wish. Every obscure `get_info()` query and + disposal, if you wish. Every obscure `get_info()` query and all CL calls are accessible. * Automatic Error Checking. All errors are automatically translated @@ -23,7 +23,7 @@ What makes PyOpenCL special? * Helpful Documentation. You're looking at it. ;) -* Liberal license. PyOpenCL is open-source under the +* Liberal license. PyOpenCL is open-source under the :ref:`MIT license <license>` and free for commercial, academic, and private use. @@ -35,12 +35,32 @@ Here's an example, to give you an impression: :download:`examples/demo.py <../examples/demo.py>` in the PyOpenCL source distribution.) +Tutorials +========= + +* `Simon McIntosh-Smith <http://www.cs.bris.ac.uk/~simonm/>`_ + and `Tom Deakin <http://www.tomdeakin.com/>`_'s course + `Hands-on OpenCL <http://handsonopencl.github.io/>`_ contains + both `lecture slides <https://github.com/HandsOnOpenCL/Lecture-Slides/releases>`_ + and `excercises (with solutions) <https://github.com/HandsOnOpenCL/Exercises-Solutions>`_ + (The course covers PyOpenCL as well as OpenCL's C and C++ APIs.) +* PyOpenCL course at `PASI <http://bu.edu/pasi>`_: Parts + `1 <https://www.youtube.com/watch?v=X9mflbX1NL8>`_ + `2 <https://www.youtube.com/watch?v=MqvfCE_bKOg>`_ + `3 <https://www.youtube.com/watch?v=TAvKmV7CuUw>`_ + `4 <https://www.youtube.com/watch?v=SsuJ0LvZW1Q>`_ + (YouTube, 2011) +* PyOpenCL course at `DTU GPULab <http://gpulab.imm.dtu.dk/>`_ and + `Simula <http://simula.no/>`_ (2011): + `Lecture 1 <http://tiker.net/pub/simula-pyopencl-lec1.pdf>`_ + `Lecture 2 <http://tiker.net/pub/simula-pyopencl-lec2.pdf>`_ + `Problem set 1 <http://tiker.net/pub/simula-pyopencl-probset1.pdf>`_ + `Problem set 2 <http://tiker.net/pub/simula-pyopencl-probset2.pdf>`_ +* Ian Johnson's `PyOpenCL tutorial <http://enja.org/2011/02/22/adventures-in-pyopencl-part-1-getting-started-with-python/>`_. + Contents ======== -A `tutorial <http://enja.org/2011/02/22/adventures-in-pyopencl-part-1-getting-started-with-python/>`_ -is on the web, thanks to Ian Johnson. - .. toctree:: :maxdepth: 2 @@ -51,7 +71,7 @@ is on the web, thanks to Ian Johnson. tools misc -Note that this guide does not explain OpenCL programming and technology. Please +Note that this guide does not explain OpenCL programming and technology. Please refer to the official `Khronos OpenCL documentation <http://khronos.org/opencl>`_ for that. diff --git a/doc/tools.rst b/doc/tools.rst index 47620252061bd34534270f35f950c672ca286e3e..e85b4e9a39ac8dca6be4b8a4a6831ab49bf8852c 100644 --- a/doc/tools.rst +++ b/doc/tools.rst @@ -23,6 +23,12 @@ are made through it. Allocations performed from outside of the pool may run into spurious out-of-memory conditions due to the pool owning much or all of the available memory. +Using :class:`pyopencl.array.Array` instances with a :class:`MemoryPool` is +not complicated:: + + mem_pool = cl_tools.MemoryPool(cl_tools.ImmediateAllocator(queue)) + a_dev = cl_array.arange(queue, 2000, dtype=np.float32, allocator=mem_pool) + .. class:: PooledBuffer An object representing a :class:`MemoryPool`-based allocation of