硬核干货——《中小企业 AI 实战指南》免费下载! 了解详情
写点什么

Boost 1.61 发布,带来了新的 CPU/CPU 计算、插件管理和其他程序库

  • 2016-06-14
  • 本文字数:1444 字

    阅读完需:约 5 分钟

在 1.60 版本发布的 5 个月后,Boost 发布了 1.61 版本,增加了一些新程序库,同时更新了许多程序库。

Boost 1.61 包括 4 个新程序库:

  • Compute ,使用 OpenCL 为多核 CPU 和 GPU 运算平台提供 C++ 接口。OpenCL 是一个开放标准,它允许创建运行在异构运算设备(如 CPU 和 GPU)上的应用程序。该程序库提供管理 OpenCL 对象的类,例如设备(device)、内核(kernel)和命令队列(command_queues),同时也提供了允许开发者处理计算设备、与计算设备传输数据、迭代和转换计算设备的函数。这使得我们可以将数据传输到默认计算设备上,对数据进行转换,最后复制回宿主机:
复制代码
std::vector<float> host_vector(10000);
// 定义宿主机内容向量
// 获取默认设备,并且设置上下文
compute::device device = compute::system::default_device();
compute::context context(device);
compute::command_queue queue(context, device);
// 在设备上创建向量
compute::vector<float> device_vector(host_vector.size(), context);
// 将数据从宿主机传输到设备上
compute::copy(
host_vector.begin(), host_vector.end(), device_vector.begin(), queue
);
// 就地计算每个元素的平方根
compute::transform(
device_vector.begin(),
device_vector.end(),
device_vector.begin(),
compute::sqrt<float>(),
queue
);
// 将数据复制回宿主机
compute::copy(
device_vector.begin(), device_vector.end(), host_vector.begin(), queue
);</float></float></float>
  • DLL ,一个旨在开发跨平台、可移植插件的程序库。DLL 允许开发者加载其他程序库、导入本地函数和变量、查询程序库的段和符号表等。DLL 插件可以通过 extern “C”和 BOOST_SYMBOL_EXPORT 定义。客户端应用程序可以通过执行 DLL 插件的 import 函数加载动态链接库:
复制代码
// 持有指向插件变量指针的变量
boost::shared_ptr<my_plugin_api> plugin;
plugin = dll::import<my_plugin_api>(
full_path_to_library,
name_of_symbol_to_import,
dll::load_mode::append_decorations
);</my_plugin_api></my_plugin_api>

DLL 也支持动态链接库的引用计数,以更好的控制已加载插件的生命周期、在插件卸载时执行回调函数和其他一些功能。

  • Hana ,一个元编程库,它能够提供操作异构序列的高级算法。对比现有元编程库,例如 Boost.MPL Boost.Fusion ,Hana 统一了类型和值的操作。Hana 提供了一系列容器类型,例如元组(tuple)、含无效值容器(optional)、映射(map)等,还有操作这些容器的算法集合,例如折叠(fold)、压缩(zip)、扁平化(flatten)等。
  • Metaparse ,一个用于生成解析器的程序库,它能够在编译时解析文本或代码,并且可以返回一个类型、一个常量和一个运行时调用的 C++ 函数等。Metaparse 特别倾向用于创建一种嵌入式领域特定语言。Metaparse 允许使用类似EBNF 范式的语法定义上下文无关语法。它和另一个著名的元编程库 Boost.Spirit 的主要区别是后者产生运行时解析器,而 Metaparse 产生编译时解析器。

前文提到过,Boost 1.61 也更新了许多现有程序库,包括 Multiprecision (多倍精度数值库)、 Optional (含无效值容器库)、 Geometry (几何库)、 Fusion (容器库)等等。

查看英文原文: Boost 1.61 Brings New Libraries for CPU/CPU Computation, Plugin Management, and More


感谢张龙对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2016-06-14 19:002749

评论

发布
暂无评论
发现更多内容

工程项目管理软件有哪些?

优秀

项目管理软件 工程管理

码力全开!请查收HDC.Together 2023亮点日程

HarmonyOS开发者

HarmonyOS

ACM图灵大会开幕,王海峰解读文心大模型3.5最新进展

飞桨PaddlePaddle

人工智能 百度 paddle 飞桨 百度飞桨

聆心智能Open Day发布CharacterGLM,共创超拟人大模型全“心”未来

硬科技星球

龙蜥社区用户案例征集开始啦,欢迎投稿!

OpenAnolis小助手

数据 操作系统 征稿 案例 龙蜥社区

PoseiSwap:通过 RWA 的全新叙事,反哺 Nautilus Chain 生态

BlockChain先知

活动回顾|阿里云 Serverless 技术实战与创新成都站回放&PPT下载

Serverless Devs

负载均衡 Serverless 云原生 弹性计算 FC

无门槛访问AI智能对话+最强AI绘画的方式

大数据技术指南

AI绘画 ChatGPT

从0到1!得物如何打造通用大模型训练和推理平台

得物技术

算法 大模型 ChatGPT LLM

MegEngine Python 层模块串讲(下)

MegEngineBot

深度学习 开源

低代码平台技术分享官丨日志实时隔离,助力高效发布

inBuilder低代码平台

低代码 低代码平台

如何在远距离传输大型文件时避免网络延迟和数据丢失

镭速

远距离传输大型文件 传输效率

一文帮你看懂ChatGPT

永利app贵宾会网址

人工智能 AI 科技 ChatGPT

基于P2P技术的远距离传输大型文件解决方案

镭速

p2p 文件传输 远距离传输大型文件

远距离传输大型文件:如何应对不同地区的网络环境和带宽约束

镭速

关于远程直接内存访问技术 RDMA 的高性能架构设计介绍 | 龙蜥技术

OpenAnolis小助手

开源 数据 cpu 龙蜥大讲堂 RDMA

程序员在今年这种行情下如何快速找到合适的工作?

程序员小毕

程序员 后端 面试题 架构师 java面试

低代码在数智化时代中的应用

力软低代码开发平台

IPD(集成产品开发)与传统项目管理的区别

禅道项目管理

项目管理 IPD

生态伙伴 | 华秋硬创联合长虹创投,共同打造更优生态系统

华秋电子

聆心智能“超拟人”模型升级,助力AI实现“走心”突破

硬科技星球

低代码平台实际解决了哪些问题?

互联网工科生

软件开发 低代码 低代码平台 JNFP

探索运营商渠道佣金数字化运营

鲸品堂

数字化转型 企业 运营商 电信运营商 企业号 7 月 PK 榜

亚马逊云科技如何助力中国企业建立“出海”的云端母港?

Lily

NFTScan | 07.24~07.30 NFT 市场热点汇总

NFT Research

NFT\

⻜桨⼤模型推理部署⾼性能优化

Baidu AICLOUD

大模型推理 AI 框架

SQL 执行计划管理(SPM)

KaiwuDB

KaiwuDB SPM

Boost 1.61发布,带来了新的CPU/CPU计算、插件管理和其他程序库_C++_Sergio De Simone_InfoQ精选文章