这在技术上可能是可能的
Is this multiplication technically possible?
本文关键字:在技术上 更新时间:2023-10-16
我有2个矩阵,具有200,000x3,000和3,000x200,000。它们是密集的,大多数值(80%(被填充。
为此需要多少次迭代?
幼稚算法将占O(200,000 * 3,000 * 200,000(,即O(120,000,000,000,000(,即120万亿个操作,因此可能需要一段时间。
>操作数将分别大约为4.5 GB,而输出矩阵将需要大约298 GB,假设每双字节8个字节。
将Strassen与天真算法进行比较为:
并不是一件直接的此外,矩阵不需要正方形。可以使用相同的方法将非方面的矩阵分为一半,从而产生较小的非平方矩阵。如果矩阵足够非方面,则使用基本上是O(n 2 (的简单方法将初始操作减少到更多方形产品。例如:
- 大小[2n x n] * [n x 10n]的产物可以作为20个单独的[n x n] * [n x n]操作,以形成结果;
- 大小[n x 10n] * [10n x n]的产物可以作为10个单独的[n x n] * [n x n]操作,总结以形成结果。
与仅填充两个正方形相比,这些技术将使实施更加复杂。但是,这是一个合理的假设,即任何实施Strassen而不是常规乘法的人都将比实施简单性更高的计算效率优先级。
。
另请参见自适应Strassen的矩阵乘法。
相关文章:
- 为什么不;名字在地图上是按顺序排列的吗
- 在Windows上用C++裁剪HBITMAP
- 如何加载(或映射)文件部分的最大大小,但适合在Windows上的RAM
- node-gyp 在 macOS 上未正确链接库
- 为什么在Windows上的VS 2019和Clang 9中"size_t"在没有标题的情况下工作
- 在linux上调试巨大的C++项目
- 链接阶段在Ubuntu上失败,但在MacOS上失败
- 实现一个在集合上迭代的模板函数
- 为什么我在leetcode上收到AddressSanitizer:地址0x602000000058上的堆缓冲区溢出错误
- 使用外部SDK工具链文件在VisualStudio上生成项目编译错误
- 在 Windows 上,是否可以让 dll 在不使用 PATH 环境变量的情况下在另一个文件夹中查找依赖项?
- 这在技术上可能是可能的
- 依赖GCC/LLVM的"-fexceptions"在技术上是未定义的行为吗?
- 在技术上是否可以创建 Java 虚拟机的映像文件并使用它来更快地启动 Java 应用程序
- 'top'程序用于在屏幕上重新显示数据的技术是什么?
- 从技术上讲,在strack跟踪中有一个null this指针是怎么可能的
- 用于在堆上生成对象的函数式编程技术
- 说变量和常量是数据类型的对象在技术上正确吗?
- 从技术上讲,如何在不复制的情况下移动函数返回值
- 在Linux上在进程之间传递消息的最快技术