如何在 Netezza 中执行矩阵运算?

Posted

技术标签:

【中文标题】如何在 Netezza 中执行矩阵运算?【英文标题】:How to perform Matrix operations in Netezza? 【发布时间】:2012-11-23 17:46:03 【问题描述】:

我是 netezza 并行编程的新手。有人可以说明如何执行,例如使用 netezza 并行进行矩阵加法吗?

C(m,n) = A(m,n) + B(m,n)

非常感谢。

【问题讨论】:

你能说得更具体点吗? Netezza 是一种 MPP 设备,可以通过多种方式访问​​,但通常通过使用 SQL 的关系数据库进行访问。你用什么语言来尝试这样做? 这通常是您通过Revolution R 引擎执行的操作,我会说。不过需要额外付费,因为您需要从 R 获得引擎许可。 @NWest 是否可以用 C++/Java 编写以在 netezza 环境中运行? @cairnz 我不认为,可以使用 R 的许可证。所以我不得不考虑其他选择。谢谢。 【参考方案1】:

有实现各种矩阵/线性代数运算的 Netezza 矩阵引擎。它需要安装在您的设备上。之后就可以使用 SQL 调用所有的 NZM 函数了:

CALL NZM..INITIALIZE();
CALL NZM..CREATE_RANDOM_MATRIX('A', 10, 10);
CALL NZM..CREATE_RANDOM_MATRIX('B', 10, 10);
CALL NZM..ADD('A', 'B', 'C');

有一些函数可以将表格转换为矩阵,反之亦然:

CALL NZM..CREATE_MATRIX_FROM_TABLE('TABLE_A', 'A', 10, 10);    
CALL NZM..CREATE_TABLE_FROM_MATRIX('C', 'TABLE_C');

【讨论】:

【参考方案2】:

如果您可以用 C++ 编写代码,则可以将其填充到 Netezza 的用户定义函数中。

参见here,例如 C++ 中的 udf。

您的系统应附带适当的文档,以便更深入地参考 UDF 和用于实施的自定义代码。

【讨论】:

是的,我尝试了一个在列表中查找最小数字的类似示例。我想知道我们如何将矩阵分割成并行块以进行 Netezza 并行处理? (例如对于矩阵加法 - 在并行列中对 A 和 B 矩阵进行加法以存储在 C 矩阵中)。不过感谢 UDF 链接! 你可能会更幸运地为此点击enzeecommunity,因为他们有像肖恩福克斯这样的人在那里回复。至少你应该在那里得到很好的建议。 当然我会试一试。非常感谢您的参考。我应该关闭这个帖子吗?? 您可以将回复标记为答案。不过,这并不会阻止有人稍后进来并给出更好的回复,如果/何时发生这种情况,您会收到通知,以便您也可以查看。

以上是关于如何在 Netezza 中执行矩阵运算?的主要内容,如果未能解决你的问题,请参考以下文章

犰狳库是不是会减慢矩阵运算的执行速度?

python中的矩阵运算

怎样在matlab中进行矩阵的运算?

MKL普通矩阵运算示例及函数封装

如何运用matlab矩阵运算求解线性方程组

广播类似于 Numpy 的犰狳矩阵运算的最佳方式