{"id":16504684,"url":"https://github.com/kynan/euroscipy2014","last_synced_at":"2026-05-15T05:34:25.211Z","repository":{"id":20052861,"uuid":"23321326","full_name":"kynan/EuroSciPy2014","owner":"kynan","description":"Slides from my talk at the EuroSciPy conference 2014","archived":false,"fork":false,"pushed_at":"2024-10-06T06:49:01.000Z","size":153,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"gh-pages","last_synced_at":"2025-01-12T12:32:36.367Z","etag":null,"topics":["fenics","ffc","firedrake","pyop2","ufl"],"latest_commit_sha":null,"homepage":"https://kynan.github.io/EuroSciPy2014","language":"CSS","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kynan.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2014-08-25T16:53:31.000Z","updated_at":"2024-10-06T06:49:04.000Z","dependencies_parsed_at":"2025-01-12T12:29:04.400Z","dependency_job_id":"e9d13029-0a9a-4982-b6c0-7e4ffad03cd8","html_url":"https://github.com/kynan/EuroSciPy2014","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/kynan%2FEuroSciPy2014","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kynan%2FEuroSciPy2014/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kynan%2FEuroSciPy2014/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kynan%2FEuroSciPy2014/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kynan","download_url":"https://codeload.github.com/kynan/EuroSciPy2014/tar.gz/refs/heads/gh-pages","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241435132,"owners_count":19962401,"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":["fenics","ffc","firedrake","pyop2","ufl"],"created_at":"2024-10-11T15:05:58.692Z","updated_at":"2026-05-15T05:34:25.163Z","avatar_url":"https://github.com/kynan.png","language":"CSS","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Firedrake: a High-level, Portable Finite Element Computation Framework\n\n## https://firedrakeproject.org\n\n## **Florian Rathgeber**\u003csup\u003e1\u003c/sup\u003e, Lawrence Mitchell\u003csup\u003e1\u003c/sup\u003e, David Ham\u003csup\u003e1,2\u003c/sup\u003e, Michael Lange\u003csup\u003e3\u003c/sup\u003e, Andrew McRae\u003csup\u003e2\u003c/sup\u003e, Fabio Luporini\u003csup\u003e1\u003c/sup\u003e, Gheorghe-teodor Bercea\u003csup\u003e1\u003c/sup\u003e, Paul Kelly\u003csup\u003e1\u003c/sup\u003e\n\n\u003csup\u003e1\u003c/sup\u003e Department of Computing, Imperial College London\n\u003csup\u003e2\u003c/sup\u003e Department of Mathematics, Imperial College London\n\u003csup\u003e3\u003c/sup\u003e Department of Earth Science \u0026 Engineering, Imperial College London]\n\nSlides from [my talk](https://www.euroscipy.org/2014/schedule/presentation/15/)\nat the [EuroSciPy](https://www.euroscipy.org/2014/), Cambridge, UK,\nAugust 29-30 2014: https://kynan.github.io/EuroSciPy2014\n\n### Abstract\n\nIn an ideal world, scientific applications are computationally\nefficient, maintainable, composable and allow scientists to work very\nproductively. In this talk we demonstrate that these goals are\nachievable for a specific application domain by choosing suitable\ndomain-specific abstractions implemented in Python that encapsulate\ndomain knowledge with a high degree of expressiveness.\n \nWe present a [Firedrake], a high-level Python framework for the portable\nsolution of partial differential equations on unstructured meshes with\nthe finite element method widely used in science and engineering.\n[Firedrake] is built on top of [PyOP2], a domain-specific language\nembedded in Python for parallel mesh-based computations.  Finite element\nlocal assembly operations execute the same computational kernel for\nevery element of the mesh and is therefore efficiently parallelisable.\n \n[Firedrake] allows scientists to describe variational forms and\ndiscretisations for finite element problems symbolically in a notation\nvery close to the maths using the Unified Form Language [UFL] from the\n[FEniCS project]. Variational forms are translated into computational\nkernels by the FEniCS Form Compiler [FFC].  Numerical linear algebra is\ndelegated to PETSc, leveraged via its petsc4py interface.\n \n[PyOP2] abstracts away the performance-portable parallel execution of\nthese kernels on a range of hardware architectures, targeting multi-core\nCPUs with OpenMP and GPUs and accelerators with PyCUDA and PyOpenCL and\ndistributed parallel computations with mpi4py. Backend-specific code\ntailored to each specific computation is generated, just-in-time\ncompiled and efficiently scheduled for parallel execution at runtime.\n \nDue to the composability of the [Firedrake] and [PyOP2] abstractions,\noptimised implementations for different hardware architectures can be\nautomatically generated without any changes to a single high-level\nsource. Performance matches or exceeds what is realistically attainable\nby hand-written code. Both projects are open source and developed at\nImperial College London.\n\n[PyOP2]: https://op2.github.io/PyOP2\n[Firedrake]: https://firedrakeproject.org\n[FEniCS project]: https://fenicsproject.org\n[UFL]: https://bitbucket.org/fenics-project/ufl/\n[FFC]: https://bitbucket.org/fenics-project/ffc/\n\n### Resources\n\n  * **[PyOP2](https://github.com/OP2/PyOP2)**\n    * *[PyOP2: A High-Level Framework for Performance-Portable Simulations on Unstructured Meshes](https://dx.doi.org/10.1109/SC.Companion.2012.134)*\n      Florian Rathgeber, Graham R. Markall, Lawrence Mitchell, Nicholas Loriant, David A. Ham, Carlo Bertolli, Paul H.J. Kelly,\n      WOLFHPC 2012\n    * *[Performance-Portable Finite Element Assembly Using PyOP2 and FEniCS](https://link.springer.com/chapter/10.1007/978-3-642-38750-0_21)*\n       Graham R. Markall, Florian Rathgeber, Lawrence Mitchell, Nicolas Loriant, Carlo Bertolli, David A. Ham, Paul H. J. Kelly ,\n       ISC 2013\n  * **[Firedrake](https://github.com/firedrakeproject/firedrake)**\n    * *[Cross-Loop Optimization of Arithmetic Intensity for Finite Element Local Assembly](https://dx.doi.org/10.1145/2687415)*\n      Fabio Luporini, Ana Lucia Varbanescu, Florian Rathgeber, Gheorghe-Teodor Bercea, J. Ramanujam, David A. Ham, Paul H. J. Kelly,\n      ACM Transactions on Architecture and Code Optimization, January 2015\n  * **[UFL](https://github.com/firedrakeproject/ufl)**\n  * **[FFC](https://github.com/firedrakeproject/ffc)**\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkynan%2Feuroscipy2014","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkynan%2Feuroscipy2014","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkynan%2Feuroscipy2014/lists"}