問題タブ [chapel]
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.
chapel - forall 式: 並列計算か逐次計算か?
私の理解では、forall
ステートメントは並列に実行されますが、for
ステートメントはシリアルに実行されます。実際、次のコードはこの予想を裏付けているようです (つまり、forall
スレッドのためだけのランダム シーケンス)。
一方、式として右側にforall
(または同等の [...] ) を使用すると、
すべての結果が同じになります (つまり、10 から 50 に並べ替えられます)。
これはforall
、代入の右辺の式が常にシリアルに実行されるということですか? for
もしそうなら、対応する [...] もこのコンテキストの式と同等ですか?
arrays - ブール配列内の真の要素の数を数える
Chapel では、指定された値に等しい配列要素の数を次のように数えることができます。
しかし、同様の方法は、真の要素の数をカウントするためには機能しないようです:
この場合、明示的な for ループを記述する必要がありますか、それともこの目的のための他の関数 (またはメソッド) はありますか?
アップデート
a == 5
さらに実験した後、結果を新しい配列に保存すると
その後、期待どおりに動作します
では、a == 5
配列オブジェクトとは異なるものを表している可能性があるため、.count()
直接提供されませんか?
arrays - チャペルでの配列の割り当て
他の言語とは異なり、Chapel には配列をヒープに割り当てるためのallocate
ornew
構文がないように見えますが、通常の「宣言」のような構文を使用します。たとえば、次のコードでは、2 つの配列A
とB
、仮 (ダミー) 引数に基づく関数を"宣言" しています。
これにより、次の結果が得られます。
( のサイズが大きいにも関わらず) スタック オーバーフローが発生しないため、サイズに関係なく、上記の構文が常に と をヒープに割り当てるとB
仮定してもよろしいですか?A
B
また、ドメイン変数の割り当て (または再割り当て) は、配列の割り当て (または再割り当て) の役割を果たしているようです。たとえば、次のコードは期待どおりに機能します。この場合、割り当ては常にヒープで行われますか?
結果:
最後に、ユーザーがこれらのアレイを手動で作成する必要はdeallocate
なくdelete
、必要に応じてシステムが自動的に割り当てを解除するのでしょうか?
arrays - 2 次元配列のスライスからの予期しない型
次のコードでは、またはA
を使用して、配列の 1 行目と 2 行目を取得しようとしています。ここで、私の理解では、常に新しい配列が作成され、右側へのエイリアス (または参照) が作成されます。var
ref
var
ref
結果は期待どおりです (つまり、 の 1 行目A
は変更されていません)。
しかし、タイプを印刷するrow1
と、row2
私はこの結果を得ます:
row1
「通常の」配列 (つまり、エイリアスではない) であると想定していたため、これは少し驚くべきことです。たとえば、次のようになりますvec
(これを「通常の」配列と呼びます)。
与える
だから私は(配列型として)との間にいくつかの違いがあるかどうか疑問に思っています... row1
?vec