CyclicDist 在多个语言环境中变慢

2024-02-05

我尝试使用以下方法实现矩阵乘法CyclicDist module.

当我使用一种语言环境与两种语言环境进行测试时,一种语言环境要快得多。是因为两个 Jetson nano 板之间的通信时间真的很长还是我的实现没有利用这种方式CyclicDist works?

这是我的代码:

 use Random, Time, CyclicDist;
var t : Timer;
t.start();

config const size = 10;
const Space = {1..size, 1..size};

const gridSpace = Space dmapped Cyclic(startIdx=Space.low);
var grid: [gridSpace] real;
fillRandom(grid);
const gridSpace2 = Space dmapped Cyclic(startIdx=Space.low);
var grid2: [gridSpace2] real;
fillRandom(grid2);
const gridSpace3 = Space dmapped Cyclic(startIdx=Space.low);
var grid3: [gridSpace] real;
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");
writeln("Size of matrix was:", size);
t.clear()

我知道我的实现对于分布式内存系统来说并不是最佳的。


该程序无法扩展的主要原因可能是计算从未使用除初始语言环境之外的任何语言环境。具体来说,forall 在范围内循环,就像代码中的范围一样:

forall i in 1..size do

始终使用在当前语言环境上执行的任务来运行所有迭代。这是因为范围不是 Chapel 中的分布式值,因此它们的并行迭代器不会跨区域设置分配工作。结果,循环体的所有 size**3 次执行:

grid3[i,j] += grid[i,k] * grid2[k,j];

将在区域设置 0 上运行,并且它们都不会在区域设置 1 上运行。您可以通过将以下内容放入最内层循环的主体中来看到这种情况:

writeln("locale ", here.id, " running ", (i,j,k));

(where here.id打印出当前任务正在运行的区域设置的 ID)。这将显示区域设置 0 正在运行所有迭代:

0 running (9, 1, 1)
0 running (1, 1, 1)
0 running (1, 1, 2)
0 running (9, 1, 2)
0 running (1, 1, 3)
0 running (9, 1, 3)
0 running (1, 1, 4)
0 running (1, 1, 5)
0 running (1, 1, 6)
0 running (1, 1, 7)
0 running (1, 1, 8)
0 running (1, 1, 9)
0 running (6, 1, 1)
...

将此与在分布式域上运行 forall 循环进行对比,例如gridSpace:

forall (i,j) in gridSpace do
  writeln("locale ", here.id, " running ", (i,j));

其中迭代将分布在语言环境之间:

locale 0 running (1, 1)
locale 0 running (9, 1)
locale 0 running (1, 2)
locale 0 running (9, 2)
locale 0 running (1, 3)
locale 0 running (9, 3)
locale 0 running (1, 4)
locale 1 running (8, 1)
locale 1 running (10, 1)
locale 1 running (8, 2)
locale 1 running (2, 1)
locale 1 running (8, 3)
locale 1 running (10, 2)
...

由于所有计算都在语言环境 0 上运行,但一半数据位于语言环境 1 上(由于数组是分布式的),因此会生成大量通信以从语言环境 1 的内存获取远程值到语言环境 0 的内存,以便进行计算它。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CyclicDist 在多个语言环境中变慢 的相关文章

  • 在 RESTful Web 服务中实现注销

    我正在开发一个需要注销服务的移动应用程序 登录服务是通过数据库验证来完成的 现在我陷入了注销状态 退一步 您没有提供有关如何在应用程序中执行身份验证的详细信息 并且很难猜测您在做什么 但是 需要注意的是 在 REST 应用程序中 不能有会话
  • Antlr 解析器运算符优先级

    考虑以下语法 我对运算符优先级有疑问 例如 res 2 a b有一个类似的解析树res 2 a b 我知道问题出在哪里 但我没有想到没有相互左递归的 漂亮 解决方案 你能帮我一点忙吗 该语法与自定义访问者一起使用 grammar Math
  • 如何通过索引访问 JSON 对象中的字段

    我知道这不是最好的方法 但我别无选择 我必须通过索引访问 JSONObject 中的项目 访问对象的标准方法是只写this objectName or this objectName 我还找到了一种获取 json 对象内所有字段的方法 fo
  • 测量窗口偏移

    有没有一种方法可以测量 jQuery 中窗口的偏移量 以便我可以比较 固定 元素和相对定位元素的位置 我需要能够知道窗口滚动了多远 以便我可以使用该图来计算固定元素的高度 相对于视口顶部 和相对对象的高度 相对于顶部 之间的差异文件的内容
  • 没有输入的 jQuery 日期选择器

    我有一个相当复杂的网络应用程序 我想向其中添加一些日期选择 UI 我遇到的问题是我无法从文档中弄清楚如何真正控制日期选择器的出现方式和时间 不涉及任何表单元素 不 我不会添加秘密表单字段 因此简单的开箱即用方法根本行不通 我希望有人可以提供
  • Pandas 与 Numpy 数据帧

    看这几行代码 df2 df copy df2 1 df 1 df 1 values 1 df2 ix 0 0 我们的教练说我们需要使用 values属性来访问底层的 numpy 数组 否则我们的代码将无法工作 我知道 pandas Data
  • 现代编译器是否优化乘以 1 和 -1

    如果我写 template
  • 将第三个表链接到多对多关联中的桥接表

    设计这个数据库的正确方法是什么 这是我设置表格的方式 我在名为 教师 的表和名为 仪器 的表之间存在多对多关系 然后我有一个连接两者的桥接表 我想将另一个表与 BRIDGE 表关联起来 意思是乐器 老师的组合 该表有 3 行 指定老师可以教
  • Amazon RDS for SQL Server 是否支持 SSIS?

    从谷歌搜索中读到一些相互矛盾的答案 不确定答案是是 否还是可能 我觉得读的时候已经很清楚了this http docs aws amazon com AmazonRDS latest UserGuide CHAP SQLServer htm
  • NSArrayController 无需将大型数据集加载到数组中

    我想使用 NSArrayController 向 NSTableView 提供数据 我面临的问题是我不想将所有数据预先加载到数组中 然后使用数组控制器setContent 方法 我的数据模型是一个管理数百万条记录的大型现有代码库 它包含有效
  • GUI Java 程序 - 绘图程序

    我一直试图找出我的代码有什么问题 这个想法是创建一个小的 Paint 程序并具有红色 绿色 蓝色和透明按钮 我拥有我能想到的让它工作的一切 但无法弄清楚代码有什么问题 该程序打开 然后立即关闭 import java awt import
  • 如何在 Angular 4 中翻译 mat-paginator?

    你知道如何在 Angular 中翻译 每页项目 吗mat paginator标签 这mat paginator是材料设计中的一个元素 您可以使用MatPaginatorIntl为了这 威尔 豪厄尔制作 https github com an
  • 从 mvc 控制器使用 Web api 控制器操作

    我有两个控制器 一个mvc控制器和一个api控制器 它们都在同一个项目中 HomeController Controller DataController ApiController 如果我想从 HomeController 中使用 Dat
  • 使用velocity.js制作可拖动元素的动画

    我正在使用velocity js 为用户拖动的可拖动 SVG 元素设置动画 然而 velocity js 将先前的 mousemove 坐标排队并通过所有后续的 mousemove 坐标进行动画处理 我想要的是velocity js 不要对
  • 如何确定 CultureInfo 实例是否支持拉丁字符

    是否可以确定是否CultureInfo http msdn microsoft com en us library system globalization cultureinfo aspx我正在使用的实例是否基于拉丁字符集 我相信你可以使
  • 如何在 JFreeChart 中设置多个系列的线条粗细?

    我创建了很多图表 在他们每个人中我都需要打电话 renderer setSeriesStroke i new BasicStroke 2 0f 对于每个系列 renderer is chart getXYPlot getRenderer 我
  • Android 材料芯片组件崩溃应用程序。无法膨胀 xml

    Tried Chip来自两个支持库的组件 com google android support design 28 0 0 rc01和材料 com google android material material 1 0 0 rc01 堆栈
  • 禁用允许文本选择的

    残疾人可以吗
  • PyAudio ErrNo 输入溢出 -9981

    我遇到了与用户相同的错误 Python 使用 Pyaudio 以 16000Hz 录制音频时出错 https stackoverflow com questions 12994981 python error audio recording
  • 探查器模板可以迁移到较新版本的 SQL Profiler 吗?

    是否可以将 Profiler 模板迁移到较新版本的 SQL Server 就我而言 我想将 SQL 2008 模板带到 2012 年 我尝试过 1 直接文件复制和 2 导出 导入 在这两种情况下 旧模板都会运行 但无法修改 修改后会出现以下

随机推荐

  • Python 中的类型和类

    我对 Python 中的类型和类有点困惑 例如以下 REPL 对话让我感到困惑 gt gt gt class A pass gt gt gt a A gt gt gt type a
  • Tensorflow 运算速度极其缓慢

    我正在尝试使用 python 接口开始使用张量流 我的问题是 即使执行最基本的操作 也会花费很长时间 gt 5 分钟 使用从 macports 安装的 python3 6 和使用 pip 安装的tensorflow 1 13 tf nigh
  • 如何查找哪个表列对应于 Firebird 数据库中的约束?

    我有一个旧版 Firebird 版本 2 5 2 数据库 并使用 FlameRobin 版本 0 0 2 1851 来检查它 我已在 RDB RELATION CONSTRAINTS 表上运行以下查询来搜索名为 INTEG 172 的约束
  • 尝试在 Matlab 中使用发布时陷入无限循环

    Question 1 y dtmfsig 150006260 a t linspace 0 0 9 7200 plot t y title DTMF time signal xlabel t sec ylabel y t Part B fL
  • CSS:
    dt/dd 对之间有间距/边距

    我有以下 html dl dt Item 1 dt dd ul li Value 1 li ul dd dt Item 2 dt dd dd dt Item 3 dt dd ul li Value 1 li li Value 2 li ul
  • 使用 std::vector 管理映射内存 (glMapBuffer)

    我想到用 std vector 管理一系列映射内存 来自 glMapBuffer 是个好主意 map data to ptr T dataPtr T glMapBuffer this gt target access debug code
  • 如何将页面(模式对话框)与其同级页面(侧边栏)进行通信?

    我正在将我的脚本转换为附加组件 其中一个需求是配置模板 因此我编写了一个启动字段选择器的侧边栏 由于侧边栏没有足够的空间容纳选择器 因此我必须从侧边栏创建的模式对话框中启动它 方法是在服务器端调用以下代码 var html HtmlServ
  • 如何在 javascript 中获取 HTML 文件格式作为字符串

    我想在 javascript 中获取 html 文件所有内容的字符串值 例如 有什么办法可以做到这一点吗 尝试研究 AJAX 适合将 HTML 和 C 实现到 Javascript Web 应用程序中 在你的 JS 文件中 ajax typ
  • 16位灰度PNG

    我正在尝试编写 使用 libpng 一个 16 位灰度图像 其中每个点颜色等于其坐标之和 以下代码应生成 16 位 PNG 但会生成 8 位 例如this http dl dropbox com u 15187698 test png Wh
  • 如何在Python中使用子进程重定向输出?

    我在命令行中执行的操作 cat file1 file2 file3 gt myfile 我想用 python 做什么 import subprocess shlex my cmd cat file1 file2 file3 gt myfil
  • 为什么我的 Swift 循环失败并出现错误“Can't form range with end < start”?

    我有一个 for 循环 它检查一个数字是否是一个数字的因子 然后检查该因子是否是质数 然后将其添加到数组中 根据原始号码 我会收到一条错误消息 致命错误 无法形成结束 这种情况几乎每次都会发生 但对于某些数字来说效果很好 我发现唯一可以使用
  • Excel如何返回满足一定条件的数组?

    如果我的单元格范围内有数据A1 A6这是 Apple Banana Cherry Grape Orange Watermelon 有没有办法返回一个数组 在单个单元格中 用于较大公式的中间步骤 该数组返回上述数组 除了那些满足特定条件的条目
  • 使 MSDeploy (Visual Studio) 不删除 App_Data 文件夹,而是删除其他所有内容

    我正在使用 Visual Studio 的Publish按钮来部署我的网站 并希望在服务器上有一个不同的 App Data 文件夹 有一个复选框Leave extra files on destination do not delete 这
  • C# 中的高性能 TCP 服务器

    我是一名经验丰富的 C 开发人员 但到目前为止我还没有开发过 TCP 服务器应用程序 现在我必须开发一个高度可扩展的高性能服务器 可以处理至少 5 10 000 个并发连接 通过 GPRS 从 GPS 设备获取原始字节数据 一个常见的通信流
  • 在 .net 网站中生成文本文件的最佳方法是什么?

    我的 vb net Web 应用程序中有一个页面 需要将一堆数据放入文本文件中 然后将其提供给用户下载 在 net Web 服务器上构建此类文本文件的最佳 最有效方法是什么 编辑 为了回答下面的问题 这将是下载一次然后丢弃的文件 更新 我将
  • dma_mmap_coherent 和 remap_pfn_range 有什么区别?

    目前 我正在使用示例驱动程序 https github com claudioscordino mmap alloc blob master mmap alloc c从中学习 并从中我建立了自己的自定义驱动程序 mmap 代码几乎是相同的
  • Phonegap Android InAppBrowser 不工作

    我正在使用 Phonegap Cordova 3 0 0 开发 Android 应用程序 当我调用 InAppBrowser 时 我得到了运动事件 mTouchMode 4错误 并且InAppBrowser功能不起作用 那么我该如何解决这个
  • 正则表达式将数字与 Alpha 分开

    我有一堆字符串 10people 5cars 我该如何将其拆分为 10 people 5 cars 它可以是任意数量的数字和文本 我正在考虑编写某种正则表达式 但我确信在 Python 中有一种简单的方法可以做到这一点 gt gt gt r
  • tkinter 非常慢 - 如何加快速度或使用不同的库?

    我正在使用 tkinter 生成 2D 形态图 我发现它非常慢 例如 此脚本在我的 8 核 Xeon 上花费了近 10 秒 usr bin env python3 import random import tkinter as tk A 3
  • CyclicDist 在多个语言环境中变慢

    我尝试使用以下方法实现矩阵乘法CyclicDist module 当我使用一种语言环境与两种语言环境进行测试时 一种语言环境要快得多 是因为两个 Jetson nano 板之间的通信时间真的很长还是我的实现没有利用这种方式CyclicDis