{"id":17331954,"url":"https://github.com/ocramz/hpapi","last_synced_at":"2025-10-19T00:35:02.482Z","repository":{"id":66327691,"uuid":"128483758","full_name":"ocramz/hpapi","owner":"ocramz","description":"Bindings for the PAPI library","archived":false,"fork":false,"pushed_at":"2018-04-07T01:25:15.000Z","size":26,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-02-01T11:30:35.193Z","etag":null,"topics":["performance-analysis","performance-counters"],"latest_commit_sha":null,"homepage":null,"language":"Haskell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ocramz.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":"2018-04-07T00:40:18.000Z","updated_at":"2019-12-05T06:36:07.000Z","dependencies_parsed_at":null,"dependency_job_id":"a878a599-dc21-4fdb-b4e6-acdb8d413b9b","html_url":"https://github.com/ocramz/hpapi","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/ocramz%2Fhpapi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ocramz%2Fhpapi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ocramz%2Fhpapi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ocramz%2Fhpapi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ocramz","download_url":"https://codeload.github.com/ocramz/hpapi/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245793035,"owners_count":20672895,"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":["performance-analysis","performance-counters"],"created_at":"2024-10-15T14:56:08.673Z","updated_at":"2025-10-19T00:34:57.434Z","avatar_url":"https://github.com/ocramz.png","language":"Haskell","readme":"# hPAPI\n\nThis library provides the Haskell bindings for the Performance API (PAPI) library, \u003chttp://icl.cs.utk.edu/papi/\u003e.\n\n\nInstallation\n============\nThis package requires the PAPI C library and kernel modules\nto be installed before you get started.\n\nBut the binding itself uses a standard Cabal building system\nso it can be simply installed with:\n\n    runhaskell Setup.hs configure\n    runhaskell Setup.hs build\n    runhaskell Setup.hs install\n\nThe last command may need to be run as root.\n\nUsage\n=====\nThe basic use of this library is demonstrated by the following example.\n\n    main = do\n      [l1,tlb,fp] \u003c- withCounters [papi_l1_dcm, papi_tlb_dm, papi_fp_ins]\n                       ioOperationToMeasure\n      print (l1, tlb, fp)\n\nDocumentation\n=============\nDocumentation is minimal at the moment.  In the mean time,\nthe original PAPI library documentation may prove useful.\n\nFuture Directions\n=================\n - The following \"advanced\" features of PAPI have been left\n   out in this first release:\n    - Multiplexing\n    - Threads\n    - Locks\n    - Overflow\n    - Statistical Profiling\n\n - Separate GC and mutator counters\n\n - Integration with GHC's built-in PAPI\n\n - Improved documentation.\n\n - Depending on feedback, modules may get reorganized\n\n - Better handling of errors from the PAPI library\n   (currently they just throw IO errors)\n\n - The PAPI C library is inconsistent on whether EventCode\n   is a signed int or an unsigned int.\n   This causes minor issues to be fixed.\n\nComparison with GHC's built-in PAPI\n===================================\nGHC supports a built-in version of PAPI\n(see http://hackage.haskell.org/trac/ghc/wiki/PAPI).\nThis system is different in a few ways.\n\nFirst, hpapi allows you to measure specific parts of a program\nwhile GHCI's PAPI only does whole program measurement\n\nSecond, since hpapi is a library you can have fine grained\nand sophisticated control over how things are measured.\nOn the other hand GHC's PAPI as part of the RTS gives you less\ncontrol, but on the plus side doesn't require any modification\nto the program.\n\nFinally, GHC's PAPI splits apart the counts that come from\nthe garbage collector from those that come from the mutator,\nwhile hpapi combines them.  This is a limitation of hpapi\nwe hope to correct some time in the future.\n\nIt remains to be seen whether it would be worth while\nto unify these two systems.\n\nAcknowledgments\n===============\nSupported, in part, by the National Science Foundation\nunder grant number CCF-0541364.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Focramz%2Fhpapi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Focramz%2Fhpapi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Focramz%2Fhpapi/lists"}