写点什么

NVIDIA 发布新的 C++ 数值计算库:支持 GPU 加速

  • 2023-11-15
    北京
  • 本文字数:843 字

    阅读完需:约 3 分钟

大小:385.53K时长:02:11
NVIDIA发布新的C++数值计算库:支持GPU加速

 MatX 是一个 C++ 库由 Nvidia 为其自有的 GPU 开发,,旨在使用高级语法在数值计算中实现接近本地性能,不遑多让于 Python 的 scipy 或 MATLAB。它的最新版本引入了许多新功能,包括可以将变换作为运算符,以及新的运算符,如上采样、下采样、pwelch 等等。

 

现在,可以在任何运算符表达式中使用变换,以使用运算符融合来进行延迟评估。运算符融合是 MatX 中的一个特殊功能,旨在提高性能,通过减少内存访问,从而避免内存访问成本相对寄存器访问昂贵数个数量级的问题。

 

旨在通过减少内存访问来提高性能,内存访问的成本可能比寄存器访问高出几个数量级。使用运算符融合,一个表达式不会立即计算,而是转换为表示该表达式的 C++ 类型,该类型将在需要其值时进行评估。换句话说,不是立即计算表达式的结果,比如:

 

(A = B * (cos(C) / D)).run();
复制代码

 

你可以将其值存储在一个中间表达式中:

 

auto op = (B * (cos(C) / D));
复制代码

 

将其与其他表达式组合,并在需要时进行延迟评估。这一特性是通过重载 C++ 运算符实现的。MatX 的最新版本将这一功能扩展到了变换中,例如在以下表达式中:

 

(A = B * fft(C)).run();
复制代码

 

编译器能够理解乘法运算符的右侧是 FFT 变换,而左侧是另一个表达式,可以在编译时与前者的结果进行融合

 

值得注意的是,将变换用作运算符的这种新语法与以前的变换使用方式存在一些不兼容。具体而言,以前你可能会写成matmul(C, A, B, stream),而现在应该使用(C = matmul(A,B)).run(stream)

 

MatX 0.6.0 引入的另一个新功能是新的多相通道化运算符,它可以将输入信号分成一组通道。例如,它可用于将高采样率的宽带信号转换为多个低采样率的窄带信号。

 

新的运算符包括 `upsample`,用于通过插入零来上采样信号;downsample,用于通过丢弃样本来下采样信号;pwelch,用于可视化信号的频谱,而无需进行预处理。

 

MatX 的最新版本拥有更多功能,此处无法详尽列出。如果你对完整细节感兴趣,不要错过官方发布说明。

 

原文链接:

https://www.infoq.com/news/2023/10/Nvidia-matx-cpp-numerical-lib/

2023-11-15 08:004945

评论

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

Spring 5(一)概述

浅辄

Java Spring5 11月月更

【LeetCode】最短的桥Java题解

Albert

算法 LeetCode 11月月更

基于 docker-compose 实现对 Nginx+Tomcat Web 服务的单机编排

忙着长大#

Docker-compose

第九期 - 模块六

wuli洋

Python进阶(三十)Python3实现随机数

No Silver Bullet

Python 随机数 11月月更

部署vue项目到Linux服务器

Studying_swz

Linux Vue 11月月更

深入理解客户端篇之 Jedis

邱学喆

redis jedis客户端

深入浅出建造者模式-干货!

闫同学

设计模式 11月月更

Java Web(八)JSP

浅辄

javaWeb jsp 11月月更

探知数字化研发3 - 思维篇

薛飞

Java实现List去重的5种方式

共饮一杯无

Java List 11月月更

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

忙着长大#

极客时间

mysql的一些基础知识

我是一个茶壶

MySQL 安全 11月月更

Spring 5(二)IOC容器

浅辄

Java Spring5 11月月更

Set集合和其之类HashSet、LinkedHashSet

共饮一杯无

Java set 11月月更

Python进阶(三十三)Python获取并输出当前日期时间

No Silver Bullet

Python 日期处理 11月月更

什么是缓存击穿、缓存穿透、缓存雪崩?如何解决?

闫同学

redis 缓存 11月月更

分布式系统设计理论之一致性哈希

闫同学

一致性哈希 分布式设计 11月月更

企业级业务架构设计:方法论与实践学习笔记二

程序员架构进阶

架构 业务架构 11月日更 11月月更

SAP Hybris Category 显示在 Storefront 的判定条件

汪子熙

Java SAP Hybris commerce 11月月更

Vue基础学习(六)

Studying_swz

Vue 11月月更

刨根问底 Redis, 面试过程真好使

蔡农曰

Java 编程 面试 后端

跟着卷卷龙一起学Camera--低延迟06

卷卷龙

ISP camera 11月月更

跟着卷卷龙一起学Camera--噪声与去噪01

卷卷龙

ISP camera 11月月更

The Availability and Performance analytics of Sina Weibo comment

David

架构实战营

Python进阶(三十一)往MySQL数据库里添加数据,update和insert效率分析

No Silver Bullet

Python MySQL 数据操作 11月月更

Helm部署和体验jenkins

程序员欣宸

Kubernetes Helm jenkins 11月月更

数据预处理和特征工程-特征选择-相关性过滤-卡方过滤

烧灯续昼2002

Python 机器学习 算法 sklearn 11月月更

抖音"凶猛"的幕后英雄,火山引擎DataTester累计做过150万次A/B测试

字节跳动数据平台

字节跳动 算法 AB实验 产品优化 实验科学

跟着卷卷龙一起学Camera--低延迟05

卷卷龙

ISP camera 11月月更

List集合按照某个字段或者属性分组的两种方式

共饮一杯无

Java List 11月月更

NVIDIA发布新的C++数值计算库:支持GPU加速_编程语言_Sergio De Simone_InfoQ精选文章