{"id":20433750,"url":"https://github.com/intelpython/dpep","last_synced_at":"2025-07-05T12:32:58.433Z","repository":{"id":46124740,"uuid":"425937319","full_name":"IntelPython/DPEP","owner":"IntelPython","description":"Data Parallel Extensions for Python*","archived":false,"fork":false,"pushed_at":"2025-03-18T14:56:35.000Z","size":8771,"stargazers_count":35,"open_issues_count":4,"forks_count":8,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-04-19T22:11:21.153Z","etag":null,"topics":["gpu-computing","heterogeneous-computing","numba","numpy","python"],"latest_commit_sha":null,"homepage":"https://intelpython.github.io/DPEP/main/","language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-2-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/IntelPython.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2021-11-08T17:45:42.000Z","updated_at":"2025-03-27T16:20:57.000Z","dependencies_parsed_at":"2024-11-09T21:31:48.819Z","dependency_job_id":"b8b94535-5ef9-4d78-8520-3eae0eb77755","html_url":"https://github.com/IntelPython/DPEP","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/IntelPython/DPEP","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IntelPython%2FDPEP","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IntelPython%2FDPEP/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IntelPython%2FDPEP/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IntelPython%2FDPEP/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/IntelPython","download_url":"https://codeload.github.com/IntelPython/DPEP/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IntelPython%2FDPEP/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263742042,"owners_count":23504370,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["gpu-computing","heterogeneous-computing","numba","numpy","python"],"created_at":"2024-11-15T08:20:52.108Z","updated_at":"2025-07-05T12:32:58.411Z","avatar_url":"https://github.com/IntelPython.png","language":"Jupyter Notebook","readme":"![Coding style](https://github.com/IntelPython/DPEP/actions/workflows/python_style_checks.yml/badge.svg?branch=main\u0026event=push)\n![mcpi package](https://github.com/IntelPython/DPEP/actions/workflows/mcpi_build_test_upload.yml/badge.svg?branch=main\u0026event=push)\n![Mandelbrot package](https://github.com/IntelPython/DPEP/actions/workflows/mandelbrot_build_test_deploy.yml/badge.svg?branch=main\u0026event=push)\n![GitHub Pages](https://github.com/IntelPython/DPEP/actions/workflows/gh-pages.yml/badge.svg?branch=main\u0026event=push)\n\n# Data Parallel Extensions for Python*\n\nData Parallel Extensions for Python* extend numerical Python capabilities beyond CPU and allow even higher performance\ngains on data parallel devices such as GPUs. It consists of three related projects:\n* [**dpnp** – Data Parallel Extensions for Numpy*](https://github.com/IntelPython/dpnp) - a library that implements a subset\n             of Numpy that can be executed on any data parallel device. The subset is a drop-in replacement of core\n             Numpy functions and numerical data types.\n* [**numba-dpex** – Data Parallel Extensions for Numba*](https://github.com/IntelPython/numba-dpex) - extension for Numba\n             compiler that enables programming data parallel devices the same way you program CPU with Numba.\n* [**dpctl** – Data Parallel Control library](https://github.com/IntelPython/dpctl) that provides utilities for device\n              selection, allocation of data on devices, tensor data structure along with Python Array API standard\n              implementation, and support for creation of user-defined data-parallel extensions.\n\n## Learn more\nRead more about [Data Parallel Extensions for Python](https://intelpython.github.io/DPEP/main/)\n\n## Examples\nExamples are located in `./examples`. Their names start with the 2-digit number followed by a descriptive name. You can run examples in any order, however, if\nyou are new to **Data Parallel Extensions for Python**, it is recommended to go in the order examples enumerated.\n\nThe following command will run the very first example of using **Data Parallel Extensions for Python**\n```\npython ./examples/01-hello_dpnp.py\n```\n## Tutorials\nJupyter Notebook-based Getting Started tutorials are located in `./notebooks` directory.\n\nTo run the tutorial, in the command line prompt type:\n```\njupyter notebook\n```\nThis will print some information about the notebook server in your terminal, including the URL of the web application (by default, `http://localhost:8888`):\n\n```\n\n$ jupyter notebook\n[I 08:58:24.417 NotebookApp] Serving notebooks from local directory: /Users/catherine\n[I 08:58:24.417 NotebookApp] 0 active kernels\n[I 08:58:24.417 NotebookApp] The Jupyter Notebook is running at: http://localhost:8888/\n[I 08:58:24.417 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).\n```\n\nIt will then open your default web browser to this URL.\n\nWhen the notebook opens in your browser, you will see the **Notebook Dashboard**, which will show a list of the notebooks, files, and subdirectories in the directory where the notebook server was started. Navigate to the notebook of your interest and open it in the dashboard.\n\nFor more information please refer to [Jupyter documentation](https://docs.jupyter.org/en/latest/running.html)\n\n## Benchmarks\nData Parallel Extensions for Python provide a set of [benchmarks](https://github.com/IntelPython/dpbench) illustrating different aspects of implementing the performant code with Data Parallel Extensions for Python.\nBenchmarks represent some real life numerical problem or some important part (kernel) of real life application. Each application/kernel is implemented in several variants (not necessarily all variants):\n- Pure Python: Typically the slowest and used just as a reference implementation\n- `numpy`: Same application/kernel implemented using NumPy library\n- `dpnp`: Modified `numpy` implementation to run on a specific device. You can use `numpy` as a baseline while evaluating the `dpnp` implementation and its performance\n- `numba @njit` array-style: application/kernel implemented using NumPy and compiled with Numba. You can use `numpy` as a baseline when evaluate `numba @njit` array-style implementat and its performance\n- `numba @njit` direct loops (`prange`): Same application/kernel implemented using Numba compiler using direct loops. Sometimes array-style programming is cumbersome and performance inefficient. Using direct loop programming may lead to more readable and performance code. Thus, while evaluating the performance of direct loop implementation it is useful to compare array-style Numba implementation as a baseline\n- `numba-dpex @dpjit` array-style: Modified `numba @njit` array-style implementation to compile and run on a specific device. You can use vanilla Numba implementation as a baseline while comparing `numba-dpex` implementation details and performance. You can also compare it against `dpnp` implementation to see how much extra performance `numba-dpex` can bring when you compile NumPy code for a given device\n- `numba-dpex @dpjit` direct loops (`prange`): Modified `numba @njit` direct loop implementation to compile and run on a specific device. You can use vanilla Numba implementation as a baseline while comparing `numba-dpex` implementation details and performance. You can also compare it against `dpnp` implementation to see how much extra performance `numba-dpex` can bring when you compile NumPy code for a given device\n- `numba-dpex @dpjit` kernel: Kernel-style programming, which is close to `@cuda.jit` programming model used in vanilla Numba\n- `numba-mlir`: Array-style, direct loops and kernel-style implementations for experimental MLIR-based backend for Numba\n- `cupy`: NumPy-like implementation using CuPy to run on CUDA-compatible devices\n- `@cuda.jit`: Kernel-style Numba implementation to run on CUDA-compatible devices\n- Native SYCL: Most applications/kernels also have DPC++ implementation, which can be used to compare performance of above implementations to DPC++ compiled code.\n\nFor more details please refer to `dpbench` [documentation](https://github.com/IntelPython/dpbench/blob/main/README.md).\n\n## Demos\nThere are several demo applications illustrating the power of the **Data Parallel Extensions for Python**. They are:\n\n- [Monte Carlo Pi](https://github.com/IntelPython/DPEP/tree/main/demos/mcpi\u003e) -\nThe Monte Carlo method to estimate the value of $\\pi$.\n\n- [Mandelbrot Set](https://github.com/IntelPython/DPEP/tree/main/demos/mandelbrot) -\nVisualization of the breathtaking process of diving in the famous Mandelbrot fractal\n\n- [Game of Life](https://github.com/IntelPython/DPEP/tree/main/demos/game-of-life\u003e) -\nVisualization of the life evolution using famous Conway's model\n\nFor more details please refer to the documentation located in the individual demo directory.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fintelpython%2Fdpep","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fintelpython%2Fdpep","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fintelpython%2Fdpep/lists"}