问题标签 [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.

0 投票
1 回答
66 浏览

chapel - 从 Cobegin - Chapel 中获取非原始变量

我想并行计算一些信息并在cobegin.

更准确地说,我的要求是检索这样的域(和其他非原始类型)

我知道sync/single类型,但不适用于域。

注意:out在过程参数中使用也不起作用。

0 投票
1 回答
73 浏览

syntax - 是`[]` 等价于 `forall`?

我注意到我收到的一段代码中有一些东西:

[a in A]相当于forall a in A a = a.locale.id?_

0 投票
2 回答
68 浏览

chapel - 可以生成映射分布的区域设置网格吗?

如果我运行以下代码:

在 4 个语言环境中,我得到:

是否有A.<function>返回矩阵(下)?

或者,这是我应该实施的吗?

0 投票
1 回答
205 浏览

chapel - `forall` 表达式:并行计算还是串行计算?

我对forall语句的理解是它们是并行执行的,而for语句是串行执行的。实际上,以下代码似乎证实了这种期望(即,仅用于forall线程的随机序列):

另一方面,如果我在右侧使用forall(或等效的 [...] )作为表达式

所有结果都变得相同(即从 10 到 50 排序):

这是否意味着forall赋值右侧的表达式总是串行执行?如果是这样,相应的 [...] 是否也等同for于该上下文中的表达式?

0 投票
1 回答
104 浏览

chapel - 可以创建一个对象来存储多个域吗?

我有一些我认为应该如下所示的代码:

基本上,我试图从其他numLocales - 1语言环境中获取多个数据片段。我可以创建一个对象来存储localSubdomain来自所有其他语言环境的 's 吗?我想我可以解决这个问题,但我很好奇。

0 投票
1 回答
263 浏览

arrays - 计算布尔数组中真实元素的数量

在 Chapel 中,我可以将等于给定值的数组元素的数量计算为

但类似的方法似乎不适用于计算真实元素的数量:

在这种情况下,我是否需要编写一个显式的 for 循环,或者是否有任何其他函数(或方法)用于此目的......?


更新

经过更多的实验,似乎如果我将结果保存a == 5到一个新数组

然后它按预期工作

那么,a == 5可能代表与数组对象不同的东西,因此不.count()直接提供?

0 投票
1 回答
190 浏览

chapel - 获取 Chapel 中的当前任务 ID?

如何找出哪些任务正在执行 forall 循环的哪些迭代?

例如,我想了解不同 DynamicIters 的行为方式,

我可以用它here.id来发现 forall 循环在哪个区域设置了迭代,但我不知道如何“查看”每次迭代分配到的区域设置中的哪些任务。

0 投票
1 回答
203 浏览

arrays - 教堂中的阵列分配

与其他语言不同,Chapel 中似乎没有用于在堆上分配数组allocatenew语法,而是使用通常的类似“声明”的语法。例如,在下面的代码中,我“声明”了两个数组AB一个基于形式(虚拟)参数的函数:

这给出了以下结果:

因为没有发生堆栈溢出(尽管 的大小很大B),所以可以假设上述语法总是在堆上分配AB而不管它们的大小是多少?

此外,域变量的分配(或重新分配)似乎扮演着数组分配(或重新分配)的角色。例如,以下代码按预期工作。在这种情况下,分配是否总是发生在堆上(再次)?

结果:

最后,用户是否不需要手动deallocatedelete这些数组,而是系统根据需要自动释放它们?

0 投票
1 回答
172 浏览

arrays - 二维数组切片中的意外类型

在下面的代码中,我试图A通过使用varor来获取数组的第一行和第二行ref。在这里,我的理解是var总是创建一个新数组,同时ref在右侧创建一个别名(或引用)。

结果如预期(即第一行A没有修改):

但是如果我打印的类型row1row2

我得到这个结果:

这有点令人惊讶,因为我假设row1它是一个“普通”数组(即,不是别名)。例如,以下vec(我称之为“普通”数组)

所以我想知道row1vec(作为数组类型)之间是否有一些区别......?

0 投票
1 回答
147 浏览

chapel - 切片矩阵:未解决的访问

我正在研究 Chapel,我被困在对函数内部的矩阵进行切片。接收矩阵的函数如下:

即,outer_function可以接收向量或矩阵。如果它接收到一个向量,它会inner_function使用相同的输入参数调用它。如果outer_function接收到一个矩阵,那么我想按列对输入矩阵进行切片并调用inner_function.

问题是使用x[1..number_rows, i]或使用切片输入矩阵x[{1..number_rows}, i]会在编译时引发错误:

  • x[1..number_rows, i]: 错误: '[range(int(64),bounded,false), int(64)]' 无法解决对 '[domain(1,int(64),false)] int(64)' 的访问
  • x[{1..number_rows}, i]: 错误: '[domain(1,int(64),false), int(64)]' 无法解决对 '[domain(1,int(64),false)] int(64)' 的访问

我需要帮助来找出我收到此错误的原因,以及是否有一种更像教堂的方式来实现我想要做的事情。