如何在 Chapel 中找到数组的最大值
How to find the max of an array in Chapel
它像所有好故事一样开始,我有一个矩阵 A
,我想找到最大值,有时是整个事物的最大值,有时是沿着行的最大值。
var dom = {1..2, 1..5};
var m: [dom] real;
m[1,..] = [1.0, 2.0, 3.1, 4.8, 5.6];
m[2,..] = [2.0, 3.0, 4.1, 5.8, 6.6];
writeln(m);
writeln(max(m));
但是这里没有爱,它只是在我身上拉屎:
maxy.chpl:5: error: unresolved call 'max([domain(1,int(64),false)] real(64))'
$CHPL_HOME/modules/internal/ChapelBase.chpl:614: note: candidates are: max(x, y)
我应该使用 reduce
还是有更简单的语法?
使用 max reduction 是今天完成此任务的最简单方法:
var mx = max reduce(m);
但是,对于示例中显示的问题大小,并行最大缩减可能有点矫枉过正。如果性能很重要,最好编写自己的 proc max(arr: [])
过程来遍历数组并找到最大的元素。
Chapel 已经支持可变参数的内置 max()
过程,但它不支持数组。在回答这个问题时,我想知道是否应该...
它像所有好故事一样开始,我有一个矩阵 A
,我想找到最大值,有时是整个事物的最大值,有时是沿着行的最大值。
var dom = {1..2, 1..5};
var m: [dom] real;
m[1,..] = [1.0, 2.0, 3.1, 4.8, 5.6];
m[2,..] = [2.0, 3.0, 4.1, 5.8, 6.6];
writeln(m);
writeln(max(m));
但是这里没有爱,它只是在我身上拉屎:
maxy.chpl:5: error: unresolved call 'max([domain(1,int(64),false)] real(64))'
$CHPL_HOME/modules/internal/ChapelBase.chpl:614: note: candidates are: max(x, y)
我应该使用 reduce
还是有更简单的语法?
使用 max reduction 是今天完成此任务的最简单方法:
var mx = max reduce(m);
但是,对于示例中显示的问题大小,并行最大缩减可能有点矫枉过正。如果性能很重要,最好编写自己的 proc max(arr: [])
过程来遍历数组并找到最大的元素。
Chapel 已经支持可变参数的内置 max()
过程,但它不支持数组。在回答这个问题时,我想知道是否应该...