2017-08-31 15 views
1

それはすべての良い物語のように始まり、私は行列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を使用して

答えて

2

は今日これを実現する最も簡単な方法です:

var mx = max reduce(m); 

しかし、例に示されている問題の大きさのために、並列最大の減少はやり過ぎかもしれません。パフォーマンスが重要な場合は、配列全体を反復処理し、最大の要素を見つける独自のproc max(arr: [])プロシージャを記述することをお勧めします。

Chapelは可変引数の組み込みのmax()プロシージャを既にサポートしていますが、配列をサポートしていません。この質問に答えるには、どうすればいいのだろう...

+0

答え:はい、そうすべき! –

関連する問題