{"id":20235978,"url":"https://github.com/combust/popcorn","last_synced_at":"2025-07-14T01:12:48.098Z","repository":{"id":57657198,"uuid":"88110743","full_name":"combust/popcorn","owner":"combust","description":"Compute engine for executing kernels on multiple devices","archived":false,"fork":false,"pushed_at":"2017-04-13T22:03:04.000Z","size":33,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-02-28T06:20:34.106Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/combust.png","metadata":{"files":{"readme":"README.md","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":"2017-04-13T01:12:05.000Z","updated_at":"2020-04-19T23:04:50.000Z","dependencies_parsed_at":"2022-08-26T05:20:43.693Z","dependency_job_id":null,"html_url":"https://github.com/combust/popcorn","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/combust%2Fpopcorn","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/combust%2Fpopcorn/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/combust%2Fpopcorn/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/combust%2Fpopcorn/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/combust","download_url":"https://codeload.github.com/combust/popcorn/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241679256,"owners_count":20001916,"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-11-14T08:18:34.796Z","updated_at":"2025-03-03T14:23:56.612Z","avatar_url":"https://github.com/combust.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Popcorn\n\nPopcorn is a library for executing parallel computation across different\nhardware devices. Just think of all the kernels you'll be cooking up.\n\n## Design Principles\n\nSome basic design choices of Popcorn.\n\n### Buffers\n\nA buffer is a piece of memory that can be stored in one or more devices.\nDepending on the different backend APIs used, buffers will be\nsynchronized between different devices as needed. Buffers always have a\n\"latest copy\", which indicates the most up-to-date version of the buffer\nand which device it is on. This is used to determine if an actual sync\nis needed or not when executing an operation on the data.\n\n### Future-Based API\n\nNever block if we can help it. OpenCL, CUDA and your CPU offer\nasynchronous memory synchronization between the various devices. This\nmeans we can abstract synchronization events as futures. This means a\nsynchronization event between devices won't block the calling thread, so\nit can continue to queue other commands for different buffers.\n\nBuffers are consumed into a future by every operation. This ensures that\nyou can only ever access the most up-to-date version of the buffer via\nthe future that is returned for every operation.\n\n### Generic\n\nPopcorn is generic across a set of supported devices: OpenCL, CUDA, CPU,\nand Raspberry Pi GPU. We focus on generic use first and then on\ndevice-specific optimizations.\n\n## Thank You Collenchyma\n\nThe [Collenchyma](https://github.com/autumnai/collenchyma) codebase provided a great starting point for\nPopcorn. The folks at Autumn.ai did a wonderful job pushing Rust forward\nin the machine learning community.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcombust%2Fpopcorn","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcombust%2Fpopcorn","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcombust%2Fpopcorn/lists"}