{"id":15047588,"url":"https://github.com/pzaino/cpp-hpc","last_synced_at":"2026-04-02T02:47:24.960Z","repository":{"id":245201956,"uuid":"817420530","full_name":"pzaino/CPP-HPC","owner":"pzaino","description":"A collection of stuff for HPC in C++ ","archived":false,"fork":false,"pushed_at":"2024-06-20T23:00:02.000Z","size":54,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-13T20:21:26.299Z","etag":null,"topics":["coding","cpp","cpp17","cuda-programming","hpc","library","opencl","openmp"],"latest_commit_sha":null,"homepage":"","language":"C++","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/pzaino.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-06-19T17:05:36.000Z","updated_at":"2024-06-20T23:00:06.000Z","dependencies_parsed_at":null,"dependency_job_id":"cdaf7ef4-6c53-435b-bb26-ad4067d13db3","html_url":"https://github.com/pzaino/CPP-HPC","commit_stats":null,"previous_names":["pzaino/cpp-hpc"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pzaino%2FCPP-HPC","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pzaino%2FCPP-HPC/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pzaino%2FCPP-HPC/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pzaino%2FCPP-HPC/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pzaino","download_url":"https://codeload.github.com/pzaino/CPP-HPC/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243475330,"owners_count":20296714,"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":["coding","cpp","cpp17","cuda-programming","hpc","library","opencl","openmp"],"created_at":"2024-09-24T21:00:44.801Z","updated_at":"2025-12-28T15:57:52.379Z","avatar_url":"https://github.com/pzaino.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# CPP HPC\n\n## Introduction\n\nThis repository contains libraries for high-performance computing in C++, created for my own projects, or just for fun and learning.\n\nThe reason I created these libraries is to have a set of libraries optimized for performance and relatively easy to maintain, which I can trust and use independently in my projects. To keep my project's binaries small, I don't want to include a large library just to use a small part of it.\n\nApart from this and the fact that the API is consistent across all the different implementations (OpenMP, OpenCL, CUDA, and SIMD), there is nothing special about this library. It is just a collection of classes and routines I have created for fun, learning, and use in my own projects.\n\nYou should be able to mix and match the different implementations in your project. For example, you can use the OpenMP implementation of one library for matrix summation and the CUDA implementation of another for vector processing. You can also replace them to test which one is faster for your specific use case. The API is the same for all implementations, so you can easily switch between them.\n\n## How to Build\n\nThis project uses CMake to build. To build the project, you need to have CMake installed. You also need to have the OpenMP, OpenCL, and CUDA libraries installed on your system if you want to build the OpenMP, OpenCL, and CUDA implementations respectively.\n\nThis project uses GoogleTest (gtest) for testing. If you want to build the tests, you need to have gtest installed on your system.\n\n### Installing gtest on Ubuntu\n\n```bash\nsudo apt-get install libgtest-dev\ncd /usr/src/googletest/googletest\nsudo mkdir build\ncd build\nsudo cmake ..\nsudo make\nsudo cp libgtest* /usr/lib/\n```\n\n### Installing gtest on MacOS\n\n```bash\nbrew install googletest\n```\n\n#### Installing OpenMP on Ubuntu\n\n```bash\nsudo apt-get install libomp-dev\n```\n\n#### Installing OpenCL on Ubuntu\n\n```bash\nsudo apt-get install ocl-icd-opencl-dev\n```\n\n#### Installing OpenCL on MacOS\n\n```bash\nbrew install opencl-clhpp-headers\n```\n\n#### Installing CUDA on Ubuntu\n\n```bash\nsudo apt-get install nvidia-cuda-toolkit\n```\n\n\n\nTo build the project, run the following commands:\n\n```bash\nmkdir build\ncd build\ncmake ..\nmake\n```\n\nTo build the tests, run the following commands:\n\n```bash\nmkdir build\ncd build\ncmake -DBUILD_TESTS=ON ..\nmake\n```\n\nTo run the tests, run the following command:\n\n```bash\n./build/\u003ctype\u003e_\u003cname\u003e_test\n```\n\nWhere `type` is the type of the implementation:\n\n* omp  = OpenMP\n* ocl  = OpenCL\n* cuda = CUDA\n* simd = SIMD\n\nand `name` is the name of the library.\n\nHave fun!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpzaino%2Fcpp-hpc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpzaino%2Fcpp-hpc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpzaino%2Fcpp-hpc/lists"}