【发布时间】:2015-02-05 01:30:49
【问题描述】:
我目前有一个非常大的目录,其中包含 9000 多个文件夹,每个文件夹都包含 jpeg 图像(每个文件夹平均 40 个)。
我的程序获取图像的输入文件夹并将该文件夹中图像的特征向量输出到文本文件:
./process_image images/ output/
我还有一个脚本,用法如下:
./script.sh dirlist.txt images/ output/ 1
第一个输入 dirlist.txt 包含输入目录中的文件夹名称 第 2 和第 3 个输入是输入和输出的基本目录。 第四个参数是我要访问的目录列表中的条目的索引
上面的例子会调用,假设 imageset1 在 dirlist.txt 中的索引为 1:
./process_image images/imageset1/ output/imageset1/
如果我按顺序执行此操作,我需要几天时间来处理所有 9000 个文件夹。在这种情况下,并行化的最佳方法是什么?我是否应该编写一个将 9000 个文件夹分成块并单独运行脚本的脚本,每个脚本都运行一定范围的索引?此外,鉴于一个可执行文件的 RAM 范围为 100 MB 到 1GB,我如何确定可以运行多少程序?我有 32 GB 的 RAM。
【问题讨论】:
-
瓶颈是什么? io或cpu或内存带宽? C++ 和这个问题有什么关系?
-
我不确定如何解决这个问题,以及我的瓶颈是什么。该程序是用 C++ 编写的。
-
我刚试过同时处理10个文件夹,我的CPU使用率在90%左右。可以肯定地说我的瓶颈是 CPU 吗?我在 i7-3770 上运行
标签: bash image-processing parallel-processing scientific-computing