{"id":17968518,"url":"https://github.com/inducer/languages-and-codegen-tutorial","last_synced_at":"2025-08-01T06:10:06.198Z","repository":{"id":48276832,"uuid":"46890600","full_name":"inducer/languages-and-codegen-tutorial","owner":"inducer","description":"A tutorial on defining domain-specific languages and transforming them to high-performance code","archived":false,"fork":false,"pushed_at":"2022-02-08T02:50:36.000Z","size":12587,"stargazers_count":81,"open_issues_count":0,"forks_count":15,"subscribers_count":8,"default_branch":"master","last_synced_at":"2025-03-17T04:06:47.279Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/inducer.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-11-25T22:17:10.000Z","updated_at":"2024-11-26T12:16:16.000Z","dependencies_parsed_at":"2022-08-30T09:21:19.130Z","dependency_job_id":null,"html_url":"https://github.com/inducer/languages-and-codegen-tutorial","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/inducer%2Flanguages-and-codegen-tutorial","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/inducer%2Flanguages-and-codegen-tutorial/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/inducer%2Flanguages-and-codegen-tutorial/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/inducer%2Flanguages-and-codegen-tutorial/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/inducer","download_url":"https://codeload.github.com/inducer/languages-and-codegen-tutorial/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245444236,"owners_count":20616345,"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":[],"created_at":"2024-10-29T14:40:34.149Z","updated_at":"2025-03-25T10:32:15.663Z","avatar_url":"https://github.com/inducer.png","language":"Jupyter Notebook","readme":"Domain-specific languages to Manycore and GPU: Building High-Performance Tools with Python\n==========================================================================================\n\nA tutorial on Domain-Specific Languages\n---------------------------------------\n\nThis tutorial teaches you:\n\n* how to **define** mathematically-oriented **domain-specific languages** (\"DSLs\") in\n  Python\n\n* how to build **transformations** for your DSLs to take them from **abstraction** to\n  **implementation**\n\n* how to generate highly efficient code from your domain-specific language\n\n* how to use **just-in-time compilation** with OpenCL from Python to **execute\n  generated code**\n\n* a few existing **design studies** and **use cases** for domain-specific languages\n\n* how to use loopy to generate **highly efficient code** to work with **array data**\n  targeting **heterogeneous processor architectures** (CPUs/GPUs)\n\nThe tutorial also includes a brief introductory section to familiarize you with\nthe Python and numpy syntax.\n\nThis material is an updated version of a\n`tutorial \u003chttp://sc15.supercomputing.org/schedule/event_detail-evid=tut174.html\u003e`_ I\npresented at `Supercomputing '15 \u003chttp://sc15.supercomputing.org\u003e`_ in Austin.\n\nVirtual machine image\n---------------------\n\nA virtual machine image is available that has all the necessary tools\ninstalled, to allow for easy experimentation. Follow these instructions\nto get started:\n\n1. Download a version of VirtualBox suitable for your system and install it:\n\n   https://www.virtualbox.org/wiki/Downloads\n\n2. Download the machine image itself:\n\n   http://andreask.cs.illinois.edu/tmp/dsl-tutorial.ova\n\n3. (Optionally) Check whether the image downloaded correctly using the\n   md5sum command line tool (Linux/OS X). On Windows, use this\n   tool:\n\n   http://www.pc-tools.net/win32/md5sums/\n\n   Compare the computed checksum with the following value:\n   6aa97e046293f8811d1749ab046f7f61\n\n   Only proceed once the two match. If they don't, delete the file and\n   retry the download.\n\n4. Open VirtualBox, click \"File \u003e Import Appliance\", select the\n   downloaded image and just click \"Next\" a few times.  Once imported,\n   double-click on the virtual machine to make sure it starts. After a\n   little while, you should see a simple desktop environment.\n\n5. Once all these steps complete successfully, congratulations! You are\n   good to go. I'm looking forward to seeing you at the tutorial.\n\n6. Double-click the \"Terminal\" symbol on the desktop and enter::\n\n      curl -L https://bit.ly/sc15-dsl | bash\n\n   This will download these materials onto the virtual machine and put them\n   into a subdirectory called ``sc15-tutorial-materials``. Next, type::\n\n       ipython3 notebook\n\n   to launch a browser-based interface and get started.\n\nSoftware tools\n--------------\n\nThe tutorial demonstrates the use of the following pieces of software:\n\nCore packages:\n\n*   Python: https://www.python.org\n*   numpy: https://www.numpy.org\n*   pymbolic: https://github.com/inducer/pymbolic\n*   PyOpenCL: https://github.com/pyopencl/pyopencl\n*   loopy: https://github.com/inducer/loopy\n\nSupporting packages:\n\n*   matplotlib: http://www.matplotlib.org\n*   mako: http://www.makotemplates.org\n*   cgen: https://github.com/inducer/cgen\n\nAll open-source under MIT/BSD licenses.\n\nLicense\n-------\n\nCopyright 2015 Andreas Kloeckner\n\nMaterials are available for use under a Creative Commons CC-BY license.  See\nincluded file ``LICENSE`` for details.  (I.e. by and large: retain authorship\ninformation, and otherwise do what you want)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finducer%2Flanguages-and-codegen-tutorial","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Finducer%2Flanguages-and-codegen-tutorial","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finducer%2Flanguages-and-codegen-tutorial/lists"}