问题标签 [scalapack]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
fortran - 在 SCALAPACK 中找到分布式向量范数的有效方法
使用 scalapack 考虑以下代码:
它是我尝试的迭代求解器的一部分,问题是如果我的处理器网格是二维的,我的向量在这些 procs 上没有任何元素,因此 dnrm2 产生零或norm
变量。因此导致一些proc从循环中提前退出,挂起整个循环。
除了手动广播等之外,确保正确分配规范值的正确方法是什么?
注意:这适用于 1-d procs 分布,请参阅: Inconsistent rows allocation in scalapack
下面给出的是我从维基百科文章中写的一个简单的 Bi-CGSTAB 求解器,它分别从文件 b.dat 和 A.dat 读取向量和矩阵。并继续使用 bicgstab_self_sclpk 例程解决它。下面打印的是值norm
对于 rank=4 运行:
一切都在这里。
对于排名 = 7 运行
如果需要,可以在这里下载矩阵文件:https ://github.com/ipcamit/temp_so
mpi - 在进程之间平衡一组不同大小的矩阵块的算法
我想在进程之间平衡一组矩阵块。矩阵块具有不同的大小,尽管通常一个单独的块占主导地位,具有相似的大小或什至大于所有其他块的组合。进程的数量可能比块的数量大得多和小得多。每个块可以存储在单个进程中,也可以作为 ScaLAPACK 阵列分布。平衡应在质量上满足以下条件:
- 没有进程应该接收比 target_load = sum(size(blocks[:])) / n_procs 更多的矩阵元素
- 任何块都不应分布在比 size(block) / target_load 更多的进程上。MPI 通信器可能从 mpi_comm_world 中分离出来
- MPI 通信器不能重叠(块 1 和 2 都分布在进程 0:4 上很好,但块 1 分布在进程 0:3 上,块 2 分布在进程 2:5 上是不行的;未分布的块可以任意堆叠在分布式块之上)
我知道这种分布将取决于应用前两个条件的强度和优先级(第三个条件应该严格适用)。尽管如此,是否有任何算法有助于对这些条件进行一些解释?
scalapack - 用于分配阵列的阻塞因子是什么?
在descinit示例的文档中,我们在分布式数组的描述符中找到以下属性(参数 4 和 5):
这里描述的阻塞因素是什么?
fortran - 何时从 lapack 切换到 scalack?
我有一个关于 scalapack 和系统分辨率的一般性问题。我在密集矩阵上使用 DGESV (Fortran)。从多大的规模切换到 Scalapack 才有意义?从 10 000 X 10 000 ? 100 000 到 100 000?是否有一个一般性的答案,还是逐案?
感谢您的见解