CANN/ops-collections昇腾容器库
ops-collections【免费下载链接】ops-collectionsops-collections是基于昇腾硬件的高性能容器模板库提供运行在NPU上的static_map、dynamic_map、set等容器。利用最新的SIMT并发能力支持对容器的批量插入、查找等操作提升整个系统的能力。项目地址: https://gitcode.com/cann/ops-collections一、什么是ops-collectionsops-collections介绍ops-collections是基于昇腾硬件的高性能容器模板库提供运行在NPU上的static_map、dynamic_map、set等容器。利用最新的SIMT并发能力支持对容器的批量插入、查找等操作提升整个系统的能力。软件架构核心特性支持多种容器在NPU上的高性能执行该库仅有头文件组成使用时仅需引用头文件使用风格接近STL库目录结构ops-collections ├── docs //文档文件 ├── doxygen //Doxygen配置文件 ├── include //存放公共头文件 │ ├── detail //容器实现细节 │ │ ├── extent //extent具体实现 │ │ ├── hash_functions //哈希函数实现 │ │ ├── open_addressing //开放寻址法实现 │ │ ├── pair //pair具体实现 │ │ ├── probing_scheme //probing_scheme具体实现 │ │ ├── static_map //static_map具体实现 │ │ └── storages //存储相关实现 │ ├── utility //通用函数、工具 │ ├── bucket_storage.h //BucketStorage容器头文件 │ ├── counter_storage.h //CounterStorage容器头文件 │ ├── extent.h //Extent头文件 │ ├── hash_functions.h //哈希函数对外头文件 │ ├── macros.h //宏定义 │ ├── pair.h //Pair头文件 │ ├── probing_scheme.h //探测策略头文件 │ ├── static_map.h //StaticMap容器对外头文件 │ ├── static_map_ref.h //StaticMapRef设备端引用头文件 │ └── storage.h //Storage基类头文件 ├── scripts //脚本文件存放目录 │ └── build.sh //构建脚本 └── tests //测试代码 ├── common //通用测试工具 ├── performance//性能测试 │ └── static_map ├── static_map //StaticMap单元测试 └── utility //基础组件测试二、环境构建快速安装CANN软件本节提供快速安装CANN软件的示例命令更多安装步骤请参考详细安装指南。安装前准备离线安装时请单击获取链接下载CANN软件包并上传到安装环境任意路径。安装CANN请使用CANN9.0.0-beta.2及以上版本其他版本暂不支持。chmod x Ascend-cann-toolkit_${VERSION}_linux-$(arch).run # 其中${VERSION}表示对应的CANN版本 ./Ascend-cann-toolkit_${VERSION}_linux-$(arch).run --install安装后配置配置环境变量脚本set_env.sh当前安装路径以${HOME}/Ascend为例。source ${HOME}/Ascend/ascend-toolkit/set_env.shCANN详细安装指南开发者可访问昇腾文档-昇腾社区-CANN社区版-软件安装查看CANN软件安装引导根据机器环境、操作系统和业务场景选择后阅读详细安装步骤。测试依赖ops-collections 的功能测试依赖于Catch2测试框架。Catch2 版本要求最低版本v3.5.4推荐版本v3.5.4 或更高版本自动安装构建脚本会自动下载并安装 Catch2 框架无需手动安装。在首次运行功能测试时脚本会自动从 GitHub 克隆 Catch2 v3.5.4 到本地3rdparty/Catch2目录。手动安装可选如果需要手动安装 Catch2可以执行以下命令git clone --depth 1 --branch v3.5.4 https://github.com/catchorg/Catch2.git 3rdparty/Catch2注意功能测试和性能测试是可选的如果不需要运行测试则无需安装 Catch2 框架。ops-collections 的核心功能作为纯头文件库不依赖任何第三方库。三、快速上手运行ops-collections示例下载git clone https://gitcode.com/cann/ops-collections.git您可自行选择需要的分支。编译注意ops-collections正式功能通过头文件提供不提供so或bin等编译产物因此无需编译。为了方便用户快速了解其使用方法ops-collections提供了一些调用示例这部分示例需要编译后才能运行。编译加速库设置加速库环境变量cd ops-collections bash scripts/build.sh -b执行功能测试用例运行所有功能测试用例bash scripts/build.sh -r运行个别测试用例test-name替换为具体测试名称bash scripts/build.sh -r --test-name test-name执行性能测试用例构建性能测试bash scripts/build.sh -p生成的性能测试执行文件在/build/performance文件夹下运行所有性能测试bash scripts/build.sh -rp四、API介绍API概述容器类容器名称功能说明主要特性StaticMap静态哈希表容器提供高效的键值对存储和查询功能基于开放寻址法实现支持批量操作支持同步/异步模式键值类型≤8字节核心APIAPI名称功能说明详细文档Insert / InsertAsync批量插入键值对到哈希表API文档 - InsertInsertIf / InsertIfAsync批量条件插入键值对到哈希表API文档 - InsertIfInsertOrAssign / InsertOrAssignAsync批量插入或更新键值对到哈希表API文档 - InsertOrAssignInsertAndFind / InsertAndFindAsync批量插入并查找键值对同时返回查找结果和插入标志API文档 - InsertAndFindFind / FindAsync批量查找键对应的值API文档 - FindFindIf / FindIfAsync批量条件查找键对应的值API文档 - FindIfContains / ContainsAsync批量检查键是否存在API文档 - ContainsContainsIf / ContainsIfAsync批量条件检查键是否存在API文档 - ContainsIfErase / EraseAsync批量删除键值对API文档 - EraseForEach / ForEachAsync遍历匹配槽位并执行回调API文档 - ForEachClear / ClearAsync清空哈希表API文档 - ClearCount批量统计键存在的数量API文档 - CountCapacity获取哈希表容量API文档 - CapacityData获取数据指针API文档 - Data辅助组件组件名称功能说明使用示例LinearProbing线性探测策略解决哈希冲突aclco::LinearProbingaclco::murmurhash3_32KeyBucketStorage桶式存储管理器负责内存分配和初始化自动使用无需手动配置Pair键值对结构用于存储和传递键值数据aclco::MakePair(key, value)Extent容量表示类支持静态和动态容量aclco::Extentsize_t(10000)Storage存储策略类定义桶大小aclco::Storage5Hash Functions哈希函数集合aclco::murmurhash3_32KeyAPI文档本项目使用Doxygen开源工具来自动生成API文档。Doxygen作为C代码的文档生成工具通过代码中特定格式的注释来生成HTML文档该项目提取了Readme.md和include文件夹中的内容。运行以下命令在docs/html中生成html文件bash scripts/build.sh -doc打开html文件夹中的index.html文件即为文档主页。常用Doxygen注释命令清单如下 | 命令 | 说明 | |-----------------------|-------------------| |brief|函数或类的简短描述| |param|描述函数参数 | |return/returns|描述函数返回值| |tparam|描述模板参数| |note|强调重要说明如性能、使用注意| |warning|警告用户潜在风险如类型限制、内存访问| |see/sa|交叉引用其他函数或类|五、项目集成ops-collections是一个纯头文件库无需编译即可使用。只需在项目中包含头文件#include static_map.h详细使用方法请参考 API文档和使用示例。六、文档导航API文档和使用示例- 详细的API接口说明、参数说明、使用示例开发指导- 环境构建、开发指南、性能测试七、参与贡献提交问题- 报告bug、请求新功能、提出改进建议贡献代码- 欢迎Fork项目并提交Pull Request八、更多资源CANN社区版文档九、许可证CANN Open Software License Agreement Version 2.0【免费下载链接】ops-collectionsops-collections是基于昇腾硬件的高性能容器模板库提供运行在NPU上的static_map、dynamic_map、set等容器。利用最新的SIMT并发能力支持对容器的批量插入、查找等操作提升整个系统的能力。项目地址: https://gitcode.com/cann/ops-collections创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2599461.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!