- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我需要使用 Open MPI 将 PGM 文件中的二维数组分布到 10 台工作计算机中。然后我需要操纵数组的每个值以获得负像 (255-i),然后将输出打印回来。我正在考虑使用 mpi_scatter
和 mpi_gather
来分发数据。现在的问题是如何将二维数组读入子数组并将子数组发送到每台工作计算机进行操作。我正在用 C 编写这个程序。
谁能帮我解决这个问题或者给点意见?谢谢。
PGM文件中的数组示例如下:
P2# created by 'xv balloons_bw.tif'640 480255232 227 220 216 212 209 207 206 205 205 205 207 208 209 210 211 212 211 211 213 212 211 210 209 210 210 211 212 211 210 210 210 210 211 210 210 210 210 209 210 209 208 209 208 209 210 209 208 210 209 209 208 208 208 209 208 208 208 207 207 207 206 207 207 207 207 207 207 207 207 207 207 205 204 206 205 205 204 204 204 203 202 203 202 201 201 201 200 199 199 200 199 198 198 198 197 197 198 197 196 195 195 194 193 192 192 191 191 190 190 190 190 189 189 190 188 188 188 187 187 187 186 186 186 186 187 186 186 187 188 188 187 186 186 186 185 186 186 186 187 186 186 186 185 185 187 186 185 186 185 185 186 185 184 185 186 185 186 186 186 185 186 185 185 185 184 183 184 184 183
最佳答案
读取 PGM 文件的最简单方法是使用 libpgm来自 netpbm包。
您使用以下方式读取 pgm 文件:
gray **image;
FILE *fp;
int cols; # num columns
int rows; # num rows
int maxval; # max grayscale value
fp = fopen("input.pgm","r");
image = pgm_readpgm( fp, &cols, &rows, &maxval);
您现在可以通过遍历行/列来获得负片图像:
for (i = 0; i < rows; i++)
for (j = 0; j < cols; j++)
image[i][j] = maxval - image[i][j];
棘手的一点是在 MPI 节点之间分配任务,因为 image
在内存中可能不连续(我没有检查过)。可以深入研究 the code确定存储模式并相应地分散/聚集数组,但是不能保证它不会在将来发生变化(不太可能,但可能)并破坏您的代码。
一种可能但非最佳的方法是创建一个在内存中连续的临时缓冲区,分发它,然后重建图像。例如
gray *buffer = malloc(sizeof(gray) * rows * cols);
for (i = 0; i < rows; i++)
for (j = 0; j < cols; j++)
buffer[(i*cols)+j] = image[i][j];
现在,我们准备好
maxval
。buffer[n] = maxval - buffer[n];
您可以通过将图像写回image
数据来重建图像,或者如果您熟悉the format,则只需手动打印pgm 文件即可。
至于用于 MPI 操作的数据类型,MPI_UNSIGNED
可以工作,因为 gray
是 a typedef of unsigned int
.但是,为了严格向前兼容,您可以使用 MPI_BYTE
并将您的 send_count
乘以 sizeof(gray)
。
如果您想手动读取文件,这并不难,因为您的 PGM 文件是普通格式(P2
而不是 P5
)。
假设格式有效,您需要:
fscanf(fp,"%d %d", &cols, &rows);
fscanf(fp,"%d", &maxval);
cols
和rows
分配缓冲区fscanf(fp,"%d", &buffer[r][c]);
关于c - 打开 MPI 以分发和操作 PGM 文件中的二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5075379/
我正在努力做到这一点 在我的操作中从数据库获取对象列表(确定) 在 JSP 上打印(确定) 此列表作为 JSP 中的可编辑表出现。我想修改然后将其提交回同一操作以将其保存在我的数据库中(失败。当我使用
我有以下形式的 Linq to Entities 查询: var x = from a in SomeData where ... some conditions ... select
我有以下查询。 var query = Repository.Query() .Where(p => !p.IsDeleted && p.Article.ArticleSections.Cou
我正在编写一个应用程序包,其中包含一个主类,其中主方法与GUI类分开,GUI类包含一个带有jtabbedpane的jframe,它有两个选项卡,第一个选项卡包含一个jtable,称为jtable1,第
以下代码产生错误 The nested query is not supported. Operation1='Case' Operation2='Collect' 问题是我做错了什么?我该如何解决?
我已经为 HA redis 集群(2 个副本、1 个主节点、3 个哨兵)设置了本地 docker 环境。只有哨兵暴露端口(10021、10022、10023)。 我使用的是 stackexchange
我正在 Desk.com 中构建一个“集成 URL”,它使用 Shopify Liquid 模板过滤器语法。对于开始日期为 7 天前而结束日期为现在的查询,此 URL 需要包含“开始日期”和“结束日期
你一定想过。然而情况却不理想,python中只能使用类似于 i++/i--等操作。 python中的自增操作 下面代码几乎是所有程序员在python中进行自增(减)操作的常用
我需要在每个使用 github 操作的手动构建中显示分支。例如:https://gyazo.com/2131bf83b0df1e2157480e5be842d4fb 我应该显示分支而不是一个。 最佳答
我有一个关于 Perl qr 运算符的问题: #!/usr/bin/perl -w &mysplit("a:b:c", /:/); sub mysplit { my($str, $patt
我已经使用 ArgoUML 创建了一个 ERD(实体关系图),我希望在一个类中创建两个操作,它们都具有 void 返回类型。但是,我只能创建一个返回 void 类型的操作。 例如: 我能够将 book
Github 操作仍处于测试阶段并且很新,但我希望有人可以提供帮助。我认为可以在主分支和拉取请求上运行 github 操作,如下所示: on: pull_request push: b
我正在尝试创建一个 Twilio 工作流来调用电话并记录用户所说的内容。为此,我正在使用 Record,但我不确定要在 action 参数中放置什么。 尽管我知道 Twilio 会发送有关调用该 UR
我不确定这是否可行,但值得一试。我正在使用模板缓冲区来减少使用此算法的延迟渲染器中光体积的过度绘制(当相机位于体积之外时): 使用廉价的着色器,将深度测试设置为 LEQUAL 绘制背面,将它们标记在模
有没有聪明的方法来复制 和 重命名 文件通过 GitHub 操作? 我想将一些自述文件复制到 /docs文件夹(:= 同一个 repo,不是远程的!),它们将根据它们的 frontmatter 重命名
我有一个 .csv 文件,其中第一列包含用户名。它们采用 FirstName LastName 的形式。我想获取 FirstName 并将 LastName 的第一个字符添加到它上面,然后删除空格。然
Sitecore 根据 Sitecore 树中定义的项目名称生成 URL, http://samplewebsite/Pages/Sample Page 但我们的客户有兴趣降低所有 URL(页面/示例
我正在尝试进行一些计算,但是一旦我输入金额,它就会完成。我只是希望通过单击按钮而不是自动发生这种情况。 到目前为止我做了什么: Angular JS - programming-fr
我的公司创建了一种在环境之间移动文件的复杂方法,现在我们希望将某些构建的 JS 文件(已转换和缩小)从一个 github 存储库移动到另一个。使用 github 操作可以实现这一点吗? 最佳答案 最简
在我的代码中,我创建了一个 JSONArray 对象。并向 JSONArray 对象添加了两个 JSONObject。我使用的是 json-simple-1.1.jar。我的代码是 package j
我是一名优秀的程序员,十分优秀!