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 在多个语言环境中变慢 的相关文章

  • 如何在Jenkins上更改工作空间并建立记录根目录?

    我希望将 Jenkins 的数据写入驱动器 E 因为这是服务器上的大型驱动器 Jenkins 本身安装在 C 上 我怎么做 我看到的默认配置是 工作区根目录 ITEM ROOTDIR 工作区 构建记录根目录 ITEM ROOTDIR 构建
  • 在 selenium webdriver 中打开一个新窗口而不是新选项卡

    当在我的应用程序中手动单击链接时 它会在 Chrome 和 IE 中的新选项卡中打开 但是 当我的脚本运行时 该链接会在 IE 中的新窗口而不是新选项卡中打开 相同的脚本在 Chrome 中按预期运行 知道如何摆脱这个吗 更改 IE 的默认
  • 以 UTF8 而不是 UTF16 输出 DataTable XML

    我有一个 DataTable 我正在使用 WriteXML 创建一个 XML 文件 尽管我在以 UTF 16 编码导出它时遇到问题 并且似乎没有明显的方法来更改它 我了解 NET 在字符串内部使用 UTF 16 这是正确的吗 然后 我通过
  • 正则表达式 - 匹配不包含字符串的模式

    我对正则表达式很陌生 并且一直在寻找方法来做到这一点 但没有成功 给定一个字符串 我想删除以 abc 开头 以 abc 结尾且中间不包含 abc 的任何模式 如果我做 abc abc abc 它将匹配以 b 开头 以 abc 结尾并且中间包
  • 错误:模块“html”不提供视图引擎(Express)

    我正在尝试设置一个简单的路由应用程序 但在渲染页面时不断遇到错误 Error Module html does not provide a view engine 奇怪的是我已经在 app js 文件中指定了视图引擎 但仍然收到错误 app
  • Javascript/jQuery 外部高度()

    Does idOfLememt outerHeight 对所有浏览器产生相同的结果 IE7 有什么不同吗 只要去http api jquery com outerHeight http api jquery com outerHeight
  • 我如何用 javascript/jquery 进行两指拖动?

    我正在尝试创建当有两个手指放在 div 上时拖动 div 的功能 我已将 div 绑定到 touchstart 和 touchmove 事件 我只是不确定如何编写这些函数 就像是if event originalEvent targetTo
  • 服务器响应 PASV 命令返回的地址与建立 FTP 连接的地址不同

    System Net WebException 服务器响应 PASV 命令返回的地址与建立 FTP 连接的地址不同 在 System Net FtpWebRequest CheckError 在 System Net FtpWebReque
  • Maven 构建错误 TOOLS.JAR NOT FOUND IN JRE

    我在构建 Maven 项目时遇到这个问题 请帮我解决 ERROR Failed to execute goal org apache maven plugins maven compiler plugin 2 5 1 compile def
  • Android 的代码覆盖率[重复]

    这个问题在这里已经有答案了 可能的重复 Android测试代码覆盖率 Eclipse https stackoverflow com questions 3282702 android test code coverage eclipse
  • 关闭扫描仪是否会影响性能

    我正在解决一个竞争问题 在问题中 我正在使用扫描仪获取用户输入 这是 2 个代码段 一个关闭扫描器 一个不关闭扫描器 关闭扫描仪 import java util Scanner public class JImSelection publ
  • UWP 应用程序在与商店关联后崩溃

    我正在为 Windows 创建一个 cordova 应用程序 将应用程序与商店关联后 应用程序起始页变为白色空白 如果应用程序使用包标识名称 com something moretext 则该应用程序可以正常工作 但我的商店包身份名称是 5
  • Maven2继承

    如果我有一个父 pom 并且想将其继承到多个项目 我通常通过添加到项目顶部来做到这一点
  • 如何用LoaderManager自动重新查询

    我有一个应用程序显示来自 SQLite DB 的数据 并且数据不断变化 所以显然 我认为我应该使用 LoaderManager 来显示数据 我读过一些关于将 LoaderManager 与 SQLite 结合使用的内容 然后看到了亚历克斯
  • 用 Beautiful Soup 进行抓取:为什么 get_text 方法不返回该元素的文本?

    最近我一直在用 python 开发一个项目 其中涉及抓取一些网站的一些代理 我遇到的问题是 当我尝试抓取某个知名代理站点时 当我要求 Beautiful Soup 查找 IP 在代理表中的位置时 它并没有按照我的预期执行操作 我将尝试查找每
  • C#中为线程指定特殊的cpu

    我有 2 个线程 我想告诉其中一个在第一个 cpu 上运行 第二个在第二个 cpu 上运行 例如在具有两个 cpu 的机器中 我怎样才能做到这一点 这是我的代码 UCI UCIMain new UCI Thread UCIThread ne
  • 使用并非为 IOC 设计的遗留应用程序避免服务定位器反模式

    我经常读到IOC 中的服务定位器是一种反模式 http blog ploeh dk 2010 02 03 ServiceLocatorIsAnAntiPattern aspx 去年 我们在工作中的应用程序中引入了 IOC 具体来说是 Nin
  • 如何在 Symfony 4 中为测试环境设置数据库

    我对如何在 symfony 4 中为测试环境设置数据库感到困惑 我曾经在配置测试 ymlsymfony 3 及以下版本中的文件 最佳做法是什么 我应该重新创建一个学说 yaml文件输入配置 包 测试 该文档提到如何通过编辑 phpunit
  • 尝试了解天蓝色云服务中的负载平衡

    我正在维护一个天蓝色的云服务 它有 1 个 Web 角色和几个辅助角色 该网络角色有多个实例 当我从资源中打开云服务时 我可以看到服务端点和公共IP地址 我想了解这个蔚蓝云服务中的流量负载是如何平衡的 我搜索了负载均衡器 但在订阅中找不到它
  • 如何使用 C# 以低分辨率形式提供高分辨率图像

    尝试使用 300dpi tif 图像在网络上显示 目前 当用户上传图像时 我正在动态创建缩略图 如果创建的页面引用宽度为 500x500px 的高分辨率图像 我可以使用相同的功能即时转换为 gif jpg 吗 将创建的 jpg 的即将分辨率

随机推荐

  • 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