嗨,我想看看是否有人可以看到我的代码有任何明显的问题。我正在尝试在两个 Nvidia Jetson 板上运行我的代码,以利用 8 个内核来加速。我想比较使用一块板与两块板的速度。我已将教堂环境设置为允许执行多个区域设置。 这是我的实现:
use LinearAlgebra, Norm, Random, Time;
var t : Timer;
writeln("Size of your matrix?");
var size = read(int);
var grid : [1..size, 1..size] uint(8);
var grid2 : [1..size, 1..size] uint(8);
var grid3 : [1..size, 1..size] int;
fillRandom(grid);
fillRandom(grid2);
t.start();
forall loc in Locales do
on loc do
forall i in 1..size do
forall j in 1..size do
forall k in 1..size do
grid3[i,j] += grid[i,k] * grid2[k,j];
t.stop();
writeln("Done!:");
writeln(t.elapsed(),"seconds");
t.clear();
我一直得到:
error: Only 1 locale may be used for CHPL_COMM layer 'none'
To use multiple locales, see $CHPL_HOME/doc/rst/usingchapel/multilocale.rst
当我运行cores.chpl文件时,该文件具有:
coforall loc in Locales do
on loc do
writeln("locale ", here.id, " named ", here.name, " has ", here.numPUs(), " cores.");
这是输出:
locale 0 named JetsonNano has 4 cores.
locale 1 named JetsonNano2 has 4 cores.
所以我知道环境设置正确。
我只是不确定我是否将我的矩阵乘法代码设置为允许在多个语言环境中使用。
消息:
error: Only 1 locale may be used for CHPL_COMM layer 'none'
To use multiple locales, see $CHPL_HOME/doc/rst/usingchapel/multilocale.rst
指示在编译 Chapel 程序时,您要么未设置CHPL_COMM,要么在进行编译的会话中设置为none
。 尝试在当前会话中设置CHPL_COMM=gasnet
(或者,等效地,使用--comm=gasnet
进行编译(、重新编译,然后使用-nl 2
运行。
在给定会话中,您可以运行$CHPL_HOME/util/printchplenv
以查看当前集和/或推断的环境变量是什么。 对于给定的 Chapel 程序,您可以运行./myChapelProgram --about
以获取有关编译时设置的信息。
如果您打算大部分时间使用CHPL_COMM=gasnet
,则可以使用 Chapel 配置文件来避免一遍又一遍地重新设置内容。