【ArchSummit架构师峰会】探讨数据与人工智能相互驱动的关系>>> 了解详情
写点什么

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:002228

评论

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

阿里直通车?阿里Java面试“内幕”:十万字内部面试题总结

Java架构追梦

Java 阿里巴巴 架构 面试

蓝海战略 - 如何设计与众不同的价值曲线

石云升

战略思考 职场经验 6月日更

【干货篇】bilibili:基于 Flink 的机器学习工作流平台在 b 站的应用

Apache Flink

flink

defi流动性挖矿系统开发案例分析,defi流动性挖矿现成源码

系统开发咨询1357O98O718

defi流动性系统开发案例详情丨defi流动性源码功能

系统开发咨询1357O98O718

从零开始学习3D可视化之控制对象(2)

ThingJS数字孪生引擎

可视化 数据化 3D 3D可视化

持续测试 | 测试流程提效:在 CODING 中实践迭代内的持续测试

CODING DevOps

DevOps 测试计划 持续测试 迭代式测试

拍乐云受邀QCon大会 | 详解音视频技术架构实践,首发美术教学音视频方案

拍乐云Pano

iOS上的CSS样式协议 VKCssProtocol

iOSer

CSS ios 移动开发 ios开发 VKCssProtocol

阿里P8熬了一个月肝出这份32W字Java面试手册,在Github标星68K+

Java 程序员 面试

反洗钱监管再度升级,看这家金融集团如何应对

索信达控股

大数据 银行 金融监管 风险管理 数据管理

牛客网亲测有效!牛客下载量近百万的Java程序员复盘秘籍真滴强

小Q

Java 学习 编程 架构 面试

defi流动性挖矿系统开发(案例版)丨defi流动性挖矿源码现成版

系统开发咨询1357O98O718

☕️【Java 技术之旅】知识盲点关于jar包的点点滴滴

洛神灬殇

Java jar Jar包扫描 6月日更

2021金三银四面试经历:腾讯三面落马+拒网易、CVTE后,字节四面成功拿下offer

Java 程序员 架构 面试

OGA 联盟正式成立!禅道作为理事单位助力共建开源生态!

禅道项目管理

项目管理 DevOps gitlab

新大陆!阿里P9整理出:Java架构师“成长笔记”共计23版块

Java架构师迁哥

python使用命令行传入参数

卤蛋翔

6月日更

系统性思维 系统之美1

张老蔫

28天写作

百度开发者中心全新升级 | 文末六一送福利

百度开发者中心

百度 福利

你想进大厂吗?阿里Java面试“内幕”分享

Java架构师迁哥

《原则》(三)

Changing Lin

Flink 在有赞的实践和应用

Apache Flink

flink

拍乐云推出业内首个「线上美术教学音视频方案」,打造极致互动体验

拍乐云Pano

大数据好书推荐

五分钟学大数据

官宣!禅道与极狐(GitLab)达成深度合作,携手推进开源开放DevOps生态发展

禅道项目管理

项目管理 DevOps gitlab

联邦计算在百度观星盘的实践

百度Geek说

龙蜥专场精彩回放来了!10位技术大咖、242位开发者相聚

阿里云基础软件团队

百度搜索与推荐引擎的云原生改造

百度开发者中心

云原生

23种设计模式,正确的解读方式原来是这样

Java架构师迁哥

分享:在阿里做Java开发的这五年,收获与感悟

Java架构师迁哥

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