Julia 中的奇怪分配

2023-11-23

考虑这个函数

function test_function(state, M, new_number)
    M[state..., 1] = new_number
end

在我的程序中,我想多次运行此函数,每次参数都是新的(有时由用户提供)。

为了测试这个函数的内存分配和速度,我写了这个循环


function test_for_loop(loop_num)
    state = [1, 1, 1 ]
    M     = randn(10,10,10,10)
    new_number = 3.0
    for i in 1:loop_num
        test_function(state, M, new_number)
    end 
end 

注意test_for_loop纯粹是为了测试效率而编写的test_function被多次应用。事实上,在每个应用程序中,state, M, and new_number是事先不知道的。

I used @allocated找到内存分配。随着我的增加loop_num,内存分配上升。我不知道为什么所以我用了--track-allocation。事实证明M[state...] = new_number占用大量内存分配。有人可以解释一下为什么吗?为什么它分配额外的内存,以及如何减少内存分配,使其不会随着loop_num?


原因是:

state = [1, 1, 1]

这是一个向量,它没有指定它的类型有多长。

将其更改为例如一个元组(因为元组已知编译时大小):

state = (1, 1, 1)

分配问题将得到解决:

julia> function test_for_loop(loop_num)
           state = (1, 1, 1)
           M     = randn(10,10,10,10)
           new_number = 3.0
           for i in 1:loop_num
               test_function(state, M, new_number)
           end
       end
test_for_loop (generic function with 1 method)

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

Julia 中的奇怪分配 的相关文章

  • 哪个更快:堆栈分配或堆分配

    这个问题听起来可能相当简单 但这是我与另一位合作的开发人员进行的辩论 我小心翼翼地在可能的地方进行堆栈分配 而不是堆分配它们 他一边跟我说话 一边看着我 并评论说没有必要 因为他们的表现是一样的 我总是有这样的印象 堆栈的增长是恒定的时间
  • 并行模拟写入同一文件

    我的目标是在集群上并行运行 10 000 个左右的 Julia 编码模拟 每个模拟独立于所有其他模拟 每个模拟都有一个要输出的数字 以及有关哪个模拟产生该数字的 3 列信息 因此 强制每个模拟打印在单独的文件上对我来说听起来有点愚蠢 我可以
  • Julia:将数组数组转换为二维数组

    我有一个数组d包含一个浮点数组 julia gt d 99 element Array Array Float64 1 1 我正在尝试将其转换为二维数组 并且我成功地实现了我的目标 data Array Float64 length d l
  • UseCompressedOops JVM 标志有什么作用以及何时应该使用它?

    HotSpot JVM 标志是什么 XX UseCompressedOops我应该做什么以及什么时候使用它 在 64 位 Java 实例上使用它 与不使用它 时 我会看到什么样的性能和内存使用差异 去年大多数 HotSpot JVM 都默认
  • python中的内存错误

    Traceback most recent call last File run 1341144766 1067082874 solution py line 27 in main File run 1341144766 106708287
  • Android 性能:SharedPreferences 的成本

    当我的应用程序启动时 我使用分片首选项中的值填充容器类 这个想法是处理 SharedPreferences 和 PreferenceManager 一次 因为我猜它们很重 这是一个示例 SharedPreferences prefs Pre
  • 应用程序无缘无故地被杀死。怀疑 BSS 高。如何调试呢?

    我已经在CentOs6 6中成功运行我的应用程序 最近 硬件 主板和内存 更新了 我的应用程序现在毫无理由地被杀死 root localhost PktBlaster PktBlaster Killed 文件和 ldd 输出 root lo
  • iOS 视图控制器内存在被关闭后未释放

    当用户单击按钮时 它会显示一个带有两个视图控制器的新选项卡栏视图控制器 我是这样做的 ACLevelDownloadController dvc ACLevelDownloadController alloc initWithNibName
  • vector 超出范围后不清除内存

    我遇到了以下问题 我不确定我是否错了或者它是一个非常奇怪的错误 我填充了一个巨大的字符串数组 并希望在某个点将其清除 这是一个最小的例子 include
  • IBOutlet、实例变量和属性:最佳实践

    今天 我对有关声明 IBOutlet 和实例变量 管理它们 使用正确的访问器以及正确释放它们的最佳实践进行了各种研究 我已经差不多了 但我有一些小问题 我希望有人能够就最佳实践提出建议 我会将它们格式化为代码并注释问题 以便更容易理解 我排
  • PHP - 调整 PNG 图像大小时出现内存错误

    我有一个脚本可以根据上传的图像创建缩略图 它对 jpg 工作正常 但给我一个错误 致命错误 允许的内存大小 67108864 字节已耗尽 尝试分配 26250000 字节 当我上传 png 图像时 脚本是 create thumbnail
  • Julia Threads.@threads 比单线程性能慢

    我正在尝试求解一维热方程的数值 我正在使用有限差分 并且在 Julia 中使用 threads 指令时遇到一些问题 特别是下面有相同代码的两个版本 第一个是单线程 而另一个使用 threads 除了 thread指令之外 它们是相同的 fu
  • 已删除的类实例上的方法仍然有效吗?

    我在 Visual C 2010 上有这段代码 include
  • 如何计算汇编中的内存位移?

    我一直在研究 yasm 汇编语言 并生成了一个包含以下内容的列表文件 我需要帮助理解第一列中的内存位移是如何计算的 提前致谢 1 line 1 1 memory asm 2 section data 3 00000000 04000000
  • C++ 类的互斥成员导致编译错误

    我不确定为什么当我向 myClass 添加互斥体成员时会发生这种情况 在本例中为 mu Error C2661 std tuple lt void thiscall MyNameSpace myClass void MyNameSpace
  • 清除堆内存以防止内存不足异常

    我知道已经有人问过有关内存不足的问题 但我没有找到解决方案 在位图工厂中 我出现内存不足异常 甚至使用 inSampleSize 1 所以我经常用 try catch 内存不足异常来包围它 因为这是一个不好的做法 try catch Out
  • MemoryStream“内存不足”C#

    我有一个自定义数据对象 虚拟文件 的实现see here https stackoverflow com questions 4024657 how to drop a file from windows formlistview to d
  • 用eclipse测试java程序的内存消耗[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何终止 Julia 中的任务/协程?

    using HttpServer http HttpHandler do request Request response Response show request Response Hello there end http events
  • 在 macOS 中通过 Python 访问进程的压缩 RAM(顶部的 CMPRS)的方法?

    我试图弄清楚如何从 Python 访问任何给定进程占用的实际 RAM 量 我发现 psutil Process PID memory info rss 工作得很好 直到操作系统决定开始压缩某些进程的 RAM 然后 所有的 memory in

随机推荐

  • NSDataDetector 检测“电话号码”文本

    我解释这个问题的最简单方法是使用代码示例及其输出 但本质上发生的是NSDataDetector正在检测包含单词 phone number 的字符串中的电话号码 NSError error nil NSDataDetector dataDet
  • 使用 tweepy 从 twitter 流 api 中排除转发

    使用Python时tweepy从 Twitter 的流 API 中提取推文的库是否可以排除转发 例如 如果我只想要特定用户 ex 发布的推文 twitterStream filter follow 20264932 但这会返回转发 我想排除
  • 如何为运行时依赖添加Import-Package指令?

    我正在使用 Gradle 构建 OSGi jar 但在清单方面遇到了一些问题 这是我的构建脚本的摘录 apply plugin java apply plugin osgi jar baseName awesome manifest nam
  • 臃肿的 EXE 大小以及与 Qt/MingW 的不必要的依赖关系

    我试图弄清楚如何缩小在最新的 QT SDK 4 8 2 基于 mingw g 下编译的 EXE 文件的大小 我当时正在开发一个普通的 C 控制台应用程序 它有一个简单的循环 并且只有 includes iostream 当我注意到它生成的
  • NLog 使用 NLog.config 动态更改文件名

    如何使用 C 中的变量动态更改文件名 我的想法是创建一个日志文件 例如Log
  • Dataframe Apply 方法返回多个元素(系列)

    import pandas as pd 假设我有一个dataframe像这样 df pd DataFrame a range 4 b range 1 5 它看起来像这样 a b 0 0 1 1 1 2 2 2 3 3 3 4 以及一个将 X
  • 如何让 bc(1) 打印前导零?

    我在 Makefile 中执行类似以下操作 echo 0 1 0 1 bc 当然 在真实文件中 数字是动态的 它打印 2但我想打印它0 2 我想这样做而不诉诸于sed但我似乎找不到如何获得bc打印零 或者是bc只是无法做到这一点 您还可以使
  • 如何通过TCL分割字符串并存储在列表中

    有没有办法分割字符串并保存在列表中 如何拆分字符串并保存在两个列表中 例如 我有一个字符串 我用它分割了几个字符串 a 1 b 2 c 3 d 4 然后我想创建两个这样的列表 a b c d and 1 2 3 4 以下是简单的tcl代码
  • 比较图像以找出差异

    任务 我在装配线的末端安装了一个摄像头 捕获生产物品的图像 举例来说 我们 制作门票 上面有一些文字和图片 所以每 生成的票据被拍照并作为图像保存到磁盘 现在我 想要检查这些保存的图像是否存在异常 即比较 将它们转换为图像 模板 这可以 所
  • 在Matlab中使像素透明

    我已经在 matlab 中导入了图像 在显示它之前如何使图像的背景透明 例如 我在白色背景上有一个红色球 如何使图像的白色像素透明 以便只有红色球可见 白色像素透明 您需要确保图像以 png 格式保存 然后您可以使用 阿尔法 参数png 文
  • Kotlin 多平台:访问代码中的构建变量

    我正在开发一个 Kotlin 多平台项目 该项目是一个为 iOS 和 Android 应用程序提供功能的 SDK In our build gradle kts我们希望在 iOS 和 Android 之间的公共代码共享代码中访问几个变量 作
  • bash:rsync,选项作为变量

    我正在编写 bash 脚本 该脚本在某些部分将通过 ssh 同步文件 不幸的是 我面临着将 rsync 选项保持为变量的问题 请看下面 variables directory etc backupDirectory backup incre
  • 即使我没有对项目进行任何更改,为什么我的数据库项目的 .dbmdl 文件也会发生变化?

    我遇到了一个小而奇怪的烦恼 似乎也发生在其他人身上 例如 查看SEDE的修订历史 我在 Visual Studio 2010 中有一个可以正常工作的 SQL Server 2008 数据库项目 当我提交 签入源代码管理时 我被告知我的数据库
  • Symfony2:自定义错误页面扩展base.html.twig

    我正在尝试自定义 Symfony 中的错误页面 这是我的error html twig文件位于app Resources TwigBundle views Exception extends base html twig block bod
  • Google GCM 服务器返回未经授权的错误 401

    我正在使用 GCM 服务从服务器推送信息 如果我使用浏览器键 它会显示成功消息 multicast id 4849013215736515938 成功 1 失败 0 canonical ids 0 结果 message id 0 13487
  • 将 NULL 插入具有默认值的 NOT NULL 列

    对于一些背景知识 我们使用Zend 框架 2 and Doctrine在上班 教义总是会插入NULL对于我们自己不填充的价值观 通常这是可以的 因为如果该字段有默认值 那么它应该使用该默认值填充该字段 对于我们正在运行的服务器之一MySQL
  • Java 正则表达式中的零长度匹配

    我的代码 Pattern pattern Pattern compile a Matcher matcher pattern matcher ababa while matcher find System out println match
  • Microsoft.AspNetCore.All 元包的优缺点[关闭]

    Closed 这个问题是基于意见的 目前不接受答案 In ASP NET Core 2 0无需包括个人package references in the csproj file Microsoft AspNetCore All元包包含所有必
  • 如何在 iOS 应用程序中列出所有 MFI 设备?

    我想显示所有通过 MFI 且之前未从 iOS 设置配对的苹果设备的列表 我可以使用以下代码列出已连接的设备 NSArray accessories EAAccessoryManager sharedAccessoryManager conn
  • Julia 中的奇怪分配

    考虑这个函数 function test function state M new number M state 1 new number end 在我的程序中 我想多次运行此函数 每次参数都是新的 有时由用户提供 为了测试这个函数的内存分