AI实践哪家强?来 AICon, 解锁技术前沿,探寻产业新机! 了解详情
写点什么

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

评论

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

WeLink&SKG,让年轻人爱上养生

i生活i科技

雾霾对户外LED显示屏的考验

Dylan

LED LED显示屏 户外LED显示屏

Flink on Yarn三部曲之一:准备工作

程序员欣宸

大数据 flink hadoop YARN 12月月更

架构实战营模块 7 作业

陌生流云

架构实战营

使用 Databend 加速 Hive 查询

Databend

华为云发布《基于MetaTown构建数字资产平台》

爱尚科技

iOS 查找字符串出现的范围

刿刀

ios swift

一文读懂|2021年数据库领域精彩回顾

YMatrix 超融合数据库

BSN开放联盟链“中移链”浏览器2.0正式发布!

BSN研习社

BSN 中移链

华为云发布《高可用网站架构云化解决方案》

爱尚科技

源码级解决方案一键部署,华为云Solution as Code正式上线

科技怪授

基于云原生的火山引擎边缘云应用与实践

火山引擎边缘云

分布式 云原生 边缘计算 节点 火山引擎边缘计算

极客时间运维进阶训练营第四周作业

LiaoWD

pipeline SonarQube jenkins高级用法

一文了解 Go 方法

陈明勇

Go golang 方法

腾讯云升级发布两大区块链产品,助力产业区块链数字化生态建设

科技热闻

架构实战营 1-3 面向复杂度架构设计随堂测验

西山薄凉

嵌入式系统硬件概述

timerring

嵌入式系统 12月月更

腾讯产业生态规模大、增速快、质量高,2023年将加大生态开放力度

科技热闻

架构解析:Dubbo3 应用级服务发现如何应对双11百万集群实例

Apache Dubbo

Java 开源 微服务 dubbo

深入浅出Seata的AT模式

Java 架构

WeLink助力中建西南院成功举办数字赋能培训

i生活i科技

购物季订单多管理难?用WeLink轻松搞定

科技怪授

结合RocketMQ 源码,带你了解并发编程的三大神器

华为云开发者联盟

RocketMQ 开发 华为云 12 月 PK 榜

架构实战营 1-1 架构概念随堂测验

西山薄凉

「架构实战营」

国产开源操作系统OpenCloudOS新进展:装机量超1000万节点,合作伙伴超500 家

科技热闻

三江学院计算机科学与工程学院举办“火焰杯”软件测试开发选拔赛颁奖仪式

霍格沃兹测试开发学社

架构实战营 1-2 架构图随堂测验

西山薄凉

「架构实战营」

架构实战营 1-4 架构设计三原则随堂测验

西山薄凉

Zig语言初探

Yuet

腾讯云曹磊:双碳、双循环政策驱动下,消费电子行业的新机遇

科技热闻

三江学院计算机科学与工程学院举办“火焰杯”软件测试开发选拔赛颁奖仪式

测吧(北京)科技有限公司

软件测试 测试

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