diff --git a/content/en/_index.md b/content/en/_index.md index f52f310..8636933 100644 --- a/content/en/_index.md +++ b/content/en/_index.md @@ -18,10 +18,10 @@ title: Portable Data-Parallel Python Extensions with oneAPI
diff --git a/content/en/docs/_index.md b/content/en/docs/_index.md index b627492..3725318 100755 --- a/content/en/docs/_index.md +++ b/content/en/docs/_index.md @@ -10,4 +10,6 @@ by [Nikita Grigorian](https://github.com/ndgrigorian) and [Oleksandr Pavlyk](htt This poster is intended to introduce writing portable data-parallel Python extensions using oneAPI. -We present several examples, starting with the basics of initializing a USM (universal shared memory) array, then a KDE (kernel density estimation) with pure DPC++/Sycl, then a KDE Python extension, and finally how to write a portable Python extension which uses oneMKL. +We present several examples, starting with the basics of initializing a USM (unified shared memory) array, then a KDE (kernel density estimation) with pure DPC++/Sycl, then a KDE Python extension, and finally how to write a portable Python extension which uses oneMKL. + +The examples can be found [here](https://github.com/IntelPython/example-portable-data-parallel-extensions). diff --git a/content/en/docs/kde-cpp.md b/content/en/docs/kde-cpp.md index 68c881b..ce46462 100644 --- a/content/en/docs/kde-cpp.md +++ b/content/en/docs/kde-cpp.md @@ -61,7 +61,7 @@ for further summation by another kernel operating in a similar fashion. ``` Such an approach, known as tree reduction, is implemented in ``kernel_density_esimation_temps`` function found in -``"steps/kernel_density_estimation_cpp/kde.hpp"``. +[``"steps/kernel_density_estimation_cpp/kde.hpp"``](https://github.com/IntelPython/example-portable-data-parallel-extensions/blob/main/steps/kernel_density_estimation_cpp/kde.hpp). Use of temporary allocation can be avoided if each work-item atomically adds the value of the local sum to the appropriate zero-initialized location in the output array, as in implementation ``kernel_density_estimation_atomic_ref`` @@ -119,10 +119,10 @@ in the work-group without accessing the global memory. This could be done effici ``` Complete implementation can be found in ``kernel_density_estimation_work_group_reduce_and_atomic_ref`` function -in ``"steps/kernel_density_estimation_cpp/kde.hpp"``. +in [``"steps/kernel_density_estimation_cpp/kde.hpp"``](https://github.com/IntelPython/example-portable-data-parallel-extensions/blob/main/steps/kernel_density_estimation_cpp/kde.hpp). -These implementations are called from C++ application ``"steps/kernel_density_estimation_cpp/app.cpp"``, which +These implementations are called from C++ application [``"steps/kernel_density_estimation_cpp/app.cpp"``](https://github.com/IntelPython/example-portable-data-parallel-extensions/blob/main/steps/kernel_density_estimation_cpp/app.cpp), which samples data uniformly distributed over unit cuboid, and estimates the density using Kernel Density Estimation and spherically symmetric multivariate Gaussian probability density function as the kernel. -The application can be built using `CMake`, or `Meson`, please refer to [README](steps/kernel_density_estimation_cpp/README.md) document in that folder. +The application can be built using `CMake`, or `Meson`, please refer to [README](https://github.com/IntelPython/example-portable-data-parallel-extensions/blob/main/steps/kernel_density_estimation_cpp/README.md) document in that folder. diff --git a/content/en/docs/kde-python.md b/content/en/docs/kde-python.md index 405bc84..0feabf5 100644 --- a/content/en/docs/kde-python.md +++ b/content/en/docs/kde-python.md @@ -5,7 +5,7 @@ date: 2024-07-02 weight: 3 --- -Since SYCL builds on C++, we are going to use `pybind11` project to generate Python extension. +Since SYCL builds on C++, we are going to use the `pybind11` project to generate a Python extension. We also need Python objects to carry USM allocations of input and output data, such as `dpctl` ([Data Parallel Control](https://github.com/IntelPython/dpctl.git) Python package). The `dpctl` package also provides Python objects corresponding to DPC++ runtime objects: | Python object | SYCL C++ object | @@ -15,9 +15,9 @@ We also need Python objects to carry USM allocations of input and output data, s | ``dpctl.SyclContext`` | ``sycl::context`` | | ``dpctl.SyclEvent`` | ``sycl::event`` | -`dpctl` provides integration with `pybind11` supporting castings between `dpctl` Python objects and corresponding C++ SYCL classes listed in the table above. Furthermore, the integration provides C++ class ``dpctl::tensor::usm_ndarray`` which derives from ``pybind11::object``. -It stores `dpctl.tensor.usm_ndarray` object and provides methods to query its attributes, such as data pointer, dimensionality, shape, strides -and elemental type information. +`dpctl` provides integration with `pybind11` supporting castings between `dpctl` Python objects and corresponding C++ SYCL classes listed in the table above. Furthermore, the integration provides the C++ class ``dpctl::tensor::usm_ndarray`` which derives from ``pybind11::object``. +It stores the `dpctl.tensor.usm_ndarray` object and provides methods to query its attributes, such as data pointer, dimensionality, shape, strides +and elemental type information. Underlying `dpctl.tensor.usm_ndarray` is a SYCL unified shared memory (USM) allocation. See the [SYCL standard](https://registry.khronos.org/SYCL/specs/sycl-2020/html/sycl-2020.html#sec:usm) or [dpctl.memory documentation](https://intelpython.github.io/dpctl/latest/api_reference/dpctl/memory.html#dpctl-memory-pyapi) for more details. For illustration purpose, here is a sample extension source code: @@ -29,7 +29,9 @@ For illustration purpose, here is a sample extension source code: #includeOops! This page doesn't exist. Try going back to the home page.
-You can learn how to make a 404 page like this in Custom 404 Pages.