【发布时间】:2018-12-30 01:37:48
【问题描述】:
我正在测试一个带有线程(根据系统内核数量)和非线程选项的 Java 点积程序。 (非常简单的)算法将第一个(比如 A)矩阵划分为与核心一样多的矩阵,并与完整的 B 矩阵执行点积。完成此操作后,将收集“块”以获得结果矩阵。当行和列的数量级相对较高(例如 20000 行和 20000 列)时,线程选项按预期工作,速度比标准四核系统的非线程选项快 3.3-3.5 倍。
但是对于第一个矩阵中的少量列(例如,A[20000][20] 乘以 B[20][20000]),线程和非线程选项的速度大致相等。对于较少的列,线程条件下的执行时间明显优于非线程选项下的执行时间。这个“平等边界”因行数而异。
我了解小矩阵的重载线程系统的问题,但我无法完全理解仅在少量列(第一个矩阵因子中的列,第二个矩阵因子中的行)下的这种情况。如果问题与小矩阵的性质相同,是否存在行列之间的比例,允许根据情况选择线程或非线程算法?
【问题讨论】:
-
当您询问您的代码问题时,您应该发布minimal reproducible example
-
感谢您的评论,欧文。我会记下未来的问题。
标签: java multithreading matrix matrix-multiplication