写点什么

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

评论

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

安全系列之——RSA的前世今生

诸葛小猿

安全 加密解密 非对称加密 rsa

在线互动课堂低延迟交互利器:高性能异步化设计与监控

徐敏

线程模型 异步 Task 在线课堂

企业架构实施简介

周金根

ARTS WEEK6

紫枫

ARTS 打卡计划

OMG组织的企业架构建模规范

周金根

影响企业架构项目成功的8个重要步骤

周金根

比 996 更可怕的是职场 PUA

非著名程序员

职场 职场成长 职场误区 职场 PUA

癌症筛查清单

Lee Chen

大前端 随笔杂谈

如何去学好JS的8条小建议

华为云开发者联盟

html 编程 大前端 js 代码

Unix路径是如何简化算法,架构师性能优化 John 易筋 ARTS 打卡 Week 10

John(易筋)

ARTS 打卡计划

性能测试 + 操作系统 + 锁

鲁米

Zookeeper从入门到放弃之Zookeeper典型应用场景

小隐乐乐

zookeeper 分布式 分布式锁

JVM系列-读懂 GC 日志

Rayjun

Java JVM GC

搞事情?Spring Boot今天一口气发布三个版本

YourBatman

Spring Boot 新特性

Golang新手常犯错误之【循环迭代篇】

卓丁

常见错误 引用迭代 Go 语言

【API进阶之路】无法想象!大龄码农的硬盘里有这么多宝藏

华为云开发者联盟

容器 层次 API 网关 华为云

应用程序研发之基础知识分层与进化

superman

设计模式之外观模式解析

Seven七哥

程序员 设计模式 外观模式

Java架构-不要成为项目风险的奴隶

我是苞谷

Java

TOGAF实用教程(IT帮)

周金根

区块链如何切入供应链金融市场?

CECBC

没想到 Hash 冲突还能这么玩,你的服务中招了吗?

程序猿石头

Java 安全攻防 后端 hashmap hash

LeetCode题解:206. 反转链表,JavaScript,While循环迭代,详细注释

Lee Chen

大前端 LeetCode

【总结】性能优化2

小胖子

面试题:Java 中的 ==, equals 与 hashCode 的区别与联系

简爱W

股权交易中心+区块链试点将开始

CECBC

防篡改 股权交易 可追溯 信息存证

高并发系统设计要点

南方有乔木兮

Java

拥抱400GE新引擎,跨越新基建的时代龙门

脑极体

浅析区块链如何改变生活

CECBC

数字银行 供应链 身体监测 资产管理

Java架构-代码分层的设计之道

我是苞谷

编程核心能力之重构

顿晓

学习 重构

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