Halide 与 C 布局 numpy 数组

2024-01-19

我开始使用 Halide 并在 Python 环境中使用它。在该 Python 环境中,数据作为 Numpy 数组传递,它实际上是其他地方定义的 C++ 数组的别名。

但是,当我使用调用 Halide 函数时,出现错误:



Constraint violated: img.stride.0 (520) == 1 (1)
Aborted (core dumped)
  

这可以通过将 numpy 数组复制到 Fortran 布局数组来“解决”:

img=np.copy(img,order="F")
res=np.copy(res,order="F")

使用 img 和 res 我的输入和输出图像。但请注意,这涉及额外的复制操作,这对于整体全局内存访问来说确实很糟糕。

我怎样才能规避这个问题?我一直在考虑的一种方法是实际告诉 Python 我的数组具有 Fortran 布局并正确切换索引...但是,我目前使用 PyArray_SimpleNewFromData 来获取 Python 数组(没有实际复制数据),这会导致C 风格数组。


Halide 本身期望行主存储,但索引如下所示:im(col, row)...对于习惯将图像视为矩阵或在 C 中使用 2D 数组的人来说,这看起来非常像列主存储。

因此,您的选择是更改索引以符合 Halide 的概念,或者告诉 Halide 您的内存布局是相反的(stride(0) 很大)。

这里有一个教程涵盖了密切相关的主题:http://halide-lang.org/tutorials/tutorial_lesson_16_rgb_generate.html http://halide-lang.org/tutorials/tutorial_lesson_16_rgb_generate.html

2D 输入和 Funcs 的简短版本是:

image_param.set_stride(0, Expr()).set_stride(1, 1);
output_func.output_buffer().set_stride(0, Expr()).set_stride(1, 1);

第一个 set_stride 调用取消对维度 0 中的步幅的约束,第二个告诉 Halide 它可以假设维度 1 中的步幅为 1。如果这样做,您将需要在第二个维度上对 Halide 函数进行矢量化,因为这是唯一的维度这在记忆中很密集:

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

Halide 与 C 布局 numpy 数组 的相关文章

  • 如何在保留矩阵维度的同时序列化 numpy 数组?

    numpy array tostring似乎没有保留有关矩阵维度的信息 请参阅这个问题 https stackoverflow com q 30697769 1156707 要求用户发出调用numpy array reshape 有没有办法
  • 如何选择单选按钮?

    我在用mechanize我正在尝试从单选按钮列表中选择一个按钮 该列表有 5 项 如何选择第一项 文档没有帮助我 gt gt gt br form
  • Matplotlib imshow:如何在矩阵上应用蒙版

    我正在尝试以图形方式分析二维数据 matplotlib imshow在这方面非常有用 但我觉得如果我可以从矩阵中排除一些单元格 超出感兴趣范围的值 我可以更多地利用它 我的问题是这些值使我感兴趣的范围内的色彩图 变平 排除这些值后 我可以获
  • 有没有办法拥有租户特定的 JWT 令牌

    我目前正在开发一个 SPA 应用程序 角度 后端使用 Python Flask API 该应用程序将支持多个租户 我对安全概念有点挣扎 我目前正在使用 jwt extend 颁发的 JWT 令牌对所有租户都有效 我当然可以从令牌中获取用户
  • 使用Python选择屏幕区域

    我正在用 Python 开发一个屏幕截图实用程序 目前它是专门针对 Linux 的 到目前为止 我已经能够拍摄完整桌面的屏幕截图 并将其上传到 Imgur 然后将链接复制到剪贴板 现在我想扩展到诸如活动窗口或特定选择的屏幕截图之类的功能 如
  • 为什么 Python 中的无分支函数和内置函数速度较慢?

    我发现了 2 个无分支函数 它们可以在 python 中查找两个数字的最大值 并将它们与 if 语句和内置 max 函数进行比较 我认为无分支或内置函数将是最快的 但最快的是 if 语句函数 有人知道这是为什么吗 以下是功能 If 语句 2
  • Python 中字典的合并层次结构

    我有两本词典 而我想做的事情有点奇怪 基本上 我想合并它们 这很简单 但它们是字典的层次结构 我想以这样的方式合并它们 如果字典中的项目本身就是字典并且存在于两者中 我也想合并这些字典 如果它不是字典 我希望第二个字典中的值覆盖第一个字典中
  • Python 2.7从非默认目录打开多个文件(对于opencv)

    我在 64 位 win7 上使用 python 2 7 并拥有 opencv 2 4 x 当我写 cv2 imread pic 时 它会在我的默认 python 路径中打开 pic 即C Users Myname 但是我如何设法浏览不同的目
  • Pandas系列矢量化文本处理

    我想使用矢量化操作改进我的 Pandas 代码 假设我有一个简单的 DataFrame 其中有一个文本列 其中可能包含 url Column1 0 hello http www google com 1 bye www mail com w
  • 如何获取一个类的所有实例

    我是一名初学者 正在学习 Python 我想创建一个课程Person 在构造函数中 我想将我创建的每个实例放入一个名为 实例 的集合中 然后我希望实例 方法返回所有实例 我怎样才能做到这一点 class Person Type annota
  • 如何在 Python 中从 C++/C# 紧密实现 ?: ?

    在 C 中 我可以轻松编写以下内容 string stringValue string IsNullOrEmpty otherString defaultString otherString 有没有一种快速的方法可以在 Python 中做同
  • While 在范围内循环用户输入

    我有一些代码 我想要求用户输入 1 100 之间的数字 如果他们在这些数字之间输入一个数字 它将打印 Size input 并打破循环 但是 如果他们在外部输入一个数字1 100 它将打印 大小 输入 并继续向他们重新询问一个数字 但我遇到
  • Python 请求包含有值的参数和没有值的参数

    我正在为 API 编写一个 Python 包装器 该 API 支持具有值的查询参数 例如param1如下 和查询参数do not有价值观 例如param2如下 即 https example com service param1 value
  • 如何在Python中的字符串中插入变量值

    这是一个简单的例子 amount1 input Insert your value amount2 input Insert your value print Your first value is amount1 your second
  • Python - 根据条件调用函数

    我想知道是否有一种简洁的方法来根据条件调用函数 我有这个 if list 1 some dataframe df myfunction 我想知道这是否有可能三元运算符 http book pythontips com en latest t
  • Mxnet - 缓慢的数组复制到 GPU

    我的问题 我应该如何在 mxnet 中执行快速矩阵乘法 我的具体问题 数组复制到 GPU 的速度很慢 对此我们能做些什么呢 我创建随机数组 将它们复制到上下文中 然后相乘 import mxnet as mx import mxnet nd
  • 如何在 Windows 10 上将 ipynb 文件与 Jupyter Lab(来自 Anaconda)关联

    我使用 Windows 10 Jupiter Lab 是从 Anaconda 安装的 我想交往ipynb使用 Jupyter Lab 保存文件 这样 当我双击ipynb文件应使用 Jupyter Lab 打开 我该怎么做 Install n
  • 在 pandas DataFrame 中使用比较列表的问题

    我在 pandas 中有一个 DataFrame 其列类型之一是 int 上的列表 如下所示 df pandas DataFrame 1 2 3 4 5 6 7 8 9 10 columns a b c d gt gt gt df a b
  • 在绘图中的线间隙之间添加注释

    I have a graph like this 而不是在上面的日子symbol 我想知道是否有办法可以在行之间添加此注释 从一个点到另一个点 如果以防万一 这可能是重复的 我深表歉意 This is my expected output
  • Python DNS服务器IP地址查询

    我正在尝试使用 python 获取 DNS 服务器 IP 地址 要在 Windows 命令提示符下执行此操作 我将使用 ipconfig 全部 如下所示 我想使用 python 脚本做同样的事情 有什么方法可以提取这些值吗 我成功提取了设备

随机推荐

  • Hibernate 教程 - 在哪里放置映射文件?

    我在这里关注这个关于休眠的有趣教程 http www tutorialspoint com hibernate hibernate native sql htm http www tutorialspoint com hibernate h
  • 如何在 Google App Engine 上“安装”模块?

    对不起 因为我是新手 我已经完成了所有可以进行的搜索 虽然我知道我想要安装的模块 但我无法弄清楚how安装特定模块 我想安装Python OAuth2 https github com simplegeo python oauth2到GAE
  • Spring Batch - 即使块引发一些异常,是否有办法提交数据?

    我有一个从队列读取 处理并写入数据库的进程 即使过程失败 我也必须存储在数据库中 但 Spring Batch 步骤是事务性的 并且始终回滚更改 那么 即使块引发一些异常 有没有办法提交数据呢 EDIT I 我尝试使用 Tasklet 但得
  • 停止ListView滚动动画

    我有一个ListView大约有 100 个条目 当用户从下到上 快速滑动 时 它会开始滚动 并且即使手指不再触摸显示屏也会继续滚动 有没有办法让滚动动画此时停止 我们查找android源代码 AbsListView 给它一个ACTION C
  • 获取CUDA纹理问题

    我在获取浮动纹理时遇到问题 纹理定义如下 texture
  • iOS - 使用基本本地化窗格始终为空

    在 Xcode 中添加了两种本地化 德语和英语 我正在关注有关 Use Base Internationalization 的 Apple 文档 该文档是通过转到该项目获得的 单击Info并按下复选框 如果我这样做 它会启动一个空的窗格或页
  • RESTful API 设计:CRUD 轻量级连接的最佳方式?

    请原谅问题标题 很难总结这个问题 在 Facebook 上 您like事物 在推特上 你follow人们 在 GitHub 上 您还可以follow人们和star回购协议和要点 所有这些情况都非常相似 这些连接是轻量级的 本身并不是真正的
  • 使用现有数据结构或将其用作数据结构的Boost图

    我正在编写一个应用程序 它用类似的东西解析数据结构 struct Block std string foo even more local data std map
  • 是否可以从浏览器 URL 发出 post 请求

    我有一个网站 例如www myfirstsite com myapp 当我登录此站点时 我确实从浏览器中提取了身份验证的 POST 请求 只是一个简单的认证 认证URL不同 的过程 以及参数中的用户名和密码 用户名 abc user 密码
  • 有没有办法在不知道其深度的情况下循环遍历多维数组?

    到目前为止 如果我必须循环访问多维数组 我会对每个维度使用 foreach 循环 例如对于二维 foreach array as key gt value foreach value as k2 gt v2 echo 当我不知道数组的深度时
  • 无法使用传入消息调用 Kafka Listener 方法

    我使用 Spring Boot 应用程序在 Kafka Producer 中将其转换为 toString 来发送 JSON 数组 但在 Consumer 中收到以下错误 org springframework kafka listener
  • 开发 Android 应用程序的最佳 IDE 是什么? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 通过 JavaScript 更改 CSS 伪元素样式 [重复]

    这个问题在这里已经有答案了 是否可以通过 JavaScript 更改 CSS 伪元素样式 例如 我想动态设置滚动条的颜色 如下所示 document querySelector editor webkit scrollbar thumb v
  • C++11 枚举类实例化

    我遇到过以下形式的枚举类变量实例化 并且它在 VS2012 下编译时没有任何警告或错误 UINT32 id enum class X apple pear orange X myX X id 此外 发送X id 作为也期望编译 X 类型参数
  • 如何在as3中实现撤消和重做功能

    我将创建一个应用程序 我必须实现一个撤消和重做特征 在应用程序中 舞台上将有多个对象 用户可以自定义 物体的位置 但是当用户单击 撤消 时 对象将恢复为默认值 位置 单击重做对象后将移动到新位置 所以我的问题是如何在我的应用程序中应用这些功
  • 当返回的列数是动态的时,如何计算MySQL查询的列数?

    是否可以检索查询返回的列数 这可以使用绑定的脚本语言 例如 php 轻松完成 但我正在寻找仅数据库的解决方案 Example CountCols SELECT a b c gt 3 CountCols SELECT FROM informa
  • EF Code First 4.3 命名约定外键

    我有以下实体 public class User public int ID get set public int GroupID get set navigation property with public Group Group ge
  • Java模板函数

    我有一个函数有时必须返回一个Date其他时候DateTime 乔达时间 static public
  • 设备重启后地理围栏在 Android 中保持活动状态吗

    我正在编写一个应用程序 当有人在安装的应用程序的生命周期内进入 退出多个站点时 需要使用地理围栏 当我第一次安装应用程序时 我的地理围栏实现 与下面的第二个链接非常相 似 一切正常 无论是移入 移出地理围栏时还是使用模拟位置来模拟它时 直到
  • Halide 与 C 布局 numpy 数组

    我开始使用 Halide 并在 Python 环境中使用它 在该 Python 环境中 数据作为 Numpy 数组传递 它实际上是其他地方定义的 C 数组的别名 但是 当我使用调用 Halide 函数时 出现错误 Constraint vi