Chapel LinearGebra报告调用eig时出错(csrA,左=真,右=真);

Chapel LinearGebra报告调用eig时出错(csrA,左=真,右=真);,chapel,Chapel,使用进行原型制作时,关于如何使用线性代数模块过程eig(…)未能对复杂值的CSR稀疏矩阵进行操作,csrMatrixA实例 使用linearlgebra.Sparse、IO.FormattedIO; 配置变量N=3;//可以在CLI cmdline上使用,也可以在启动器参数下面的此处使用。添加:--N=如果对照同一位置的单语言环境处理进行基准测试,这种方法的处理加速比是多少 回溯: $CHPL\u HOME/modules/packages/linearlgebra.CHPL:1404:注意:

使用进行原型制作时,关于如何使用
线性代数
模块
过程
eig(…)
未能对复杂值的CSR稀疏矩阵进行操作,
csrMatrixA
实例

使用linearlgebra.Sparse、IO.FormattedIO;
配置变量N=3;//可以在CLI cmdline上使用,也可以在启动器参数下面的此处使用。添加:--N=如果对照同一位置的单语言环境处理进行基准测试,这种方法的处理加速比是多少

回溯:

$CHPL\u HOME/modules/packages/linearlgebra.CHPL:1404:注意:

此候选人不匹配:eig(A:[]?t,参数左=假,参数右=假)

$CHPL\u HOME/modules/packages/linearlgebra.CHPL:1404:注意:

,因为where子句计算为false

$CHPL\u HOME/modules/packages/linearlgebra.CHPL:1618:注意:

候选项为:eig(A:[]?t,参数左=假,参数右=假)


在Ben Albrecht的罚单归档后,最近的重新测试以类似的方式确认了
(复杂)
(int)
eltType-s崩溃,但
(真实)
CSRMatrix()
-实例抛出LAPACK代码错误:如中所述

$CHPL\u HOME/modules/packages/LAPACK.CHPL:19775:错误:

c\u ptrTo不支持的数组类型

a) 看起来这是线性代数库的未实现功能。我在这里提出了一个问题:

b) Chapel 1.20在
LinearAlgebra
模块中还没有分布式特征解算器。我鼓励您在github存储库上打开一个问题,如果您觉得这个功能有价值的话,可以请求它


c) 参见(b)

如果我阅读了已归档的[issue-14725]票据的文本,这是否意味着对于任何其他{int | real}eltType-s(即,除了复杂的一个),Chapel代码都将编译并顺利运行-CSRMatrix()实例化和对LinearAlgebra.Sparse.eig()的调用-或者,这是否意味着问题不在于eltType本身(复合体与do real和int一样失败),因为问题在于没有正确处理稀疏表示?CSR(真实)测试证实了后者$CHPL_HOME/modules/packages/LAPACK.CHPL:19775:错误:c_ptrTo不支持的数组类型?实际上有两个问题:
eig()
还不支持复杂类型(#14725),并且
eig()
不支持稀疏矩阵(这方面还没有问题)--您是否有兴趣提交功能请求?c)是Chapel证明使用高效并行语言的经济效益的最重要的论据,Chapel一直努力做到这一点。如果提交票证可能有所帮助,请随意做任何需要的事情。然而,核心业务逻辑不在票务,但是在提供商业意义上的好处时,拥有一个稀疏的模块,但没有涵盖所有的LinearGebra方法,这阻碍了拥有它们的主要目的,不是吗?如果我要向公众展示一种以生产力为中心的语言的力量,那么它将是关于生产力的好处,而不是问题。我完全理解当前商业领域的复杂性,对公司赞助的公共领域软件的影响越大,因此,我祈祷Brad&所有团队在管理即将发布的语言版本和主要愿景方面一切顺利,这两个版本已经启动了非常可爱的高效并行编程语言Chapel Foundation of questions,现在是,希望将来也是,为了科学计算应用不断增长的基础,端到端的生产力(包括编码)非常重要(通常比原样方法的性能测试更重要)是的,我的愿景是建立一个完整的密集/稀疏分布式GPU支持的线性代数库,但可利用的资源和竞争性的优先事项非常有限,因此需要一些时间。继此问题之后,已在master(1.21.0预发行版)上解决了#14725。
use LinearAlgebra.Sparse, IO.FormattedIO;

config var N = 3;                                 // May use on the CLI-cmdline or here, below in the launcher's Arguments.add: --N=<aNumber>

var csrDOMAIN  = CSRDomain( N, N );               // Create an empty 3x3 CSR domain ---------> https://chapel-lang.org/docs/primers/sparse.html#primers-sparse
var csrMatrixA = CSRMatrix( csrDOMAIN, complex ); // Create a CSR matrix over this domain
                                                  // The above is equivalent to:               var matA: [csrDOMAIN] <dtype>;

csrDOMAIN += (1,1);                               // Add as an exemaple these indices to the sparse domain for all the nonzero data-cells
csrDOMAIN += (1,2);
csrDOMAIN += (2,2);
csrDOMAIN += (2,1);
csrDOMAIN += (3,3);

csrMatrixA.re =  1.23;                            // Set as an example all nonzero elements, all sparsely distributed over a domain indirectly described by csrDOMAIN, to a value of 1.23
csrMatrixA.im = -4.56;                            // Set as an example all nonzero elements, all sparsely distributed over a domain indirectly described by csrDOMAIN, to a value of-4.56i

writef( "CSR-Sparse Matrix A::[%i x %i] has values of:\n",
         N,
         N
         );

writeln( csrMatrixA );                            // A is now a 3x3 sparse matrix

/*/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// CRASH-REPORT:

var (     eigenVALUEs,
     rightEigenVECTORs ) = eig( csrMatrixA, right = true ); // ------------------------------> https://chapel-lang.org/docs/modules/packages/LinearAlgebra.html#LinearAlgebra.eig

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// TiO.RUN::
// .code.tio.chpl:22: error: unresolved call 'eig([CSDom(2,int(64),domain(2,int(64),false),true,false,false)] complex(128), left=1, right=1)'
// $CHPL_HOME/modules/packages/LinearAlgebra.chpl:1404: note: this candidate did not match: eig(A: [] ?t, param left = false, param right = false)
// $CHPL_HOME/modules/packages/LinearAlgebra.chpl:1404: note: because where clause evaluated to false
// $CHPL_HOME/modules/packages/LinearAlgebra.chpl:1618: note: candidates are: eig(A: [] ?t, param left = false, param right = false)
//

writeln( eigenVALUEs );
  */