做网站15年,建设银行商城网站,有建网站的软件,网站 cms 免费Matlab并行计算实践
需要对上万张图像进行OCR识别。OCR算法原型用Matlab脚本实现,对每张图逐行逐字符识别,整体计算时间很长。找多核多CPU并行执行的方案
Matlab有并行工具箱。可以使用parfor对循环进行并行处理#xff0c;parfor要求循环之间的运算独立不相关#xff1b;另…Matlab并行计算实践
需要对上万张图像进行OCR识别。OCR算法原型用Matlab脚本实现,对每张图逐行逐字符识别,整体计算时间很长。找多核多CPU并行执行的方案
Matlab有并行工具箱。可以使用parfor对循环进行并行处理parfor要求循环之间的运算独立不相关另一种方式用SPMD模式,类似多线程/多进程方式每个后台计算单位(worker)都有唯一标识(labindex),类似openmp里的线程id或是mpi里的rank, 同时可以获取worker数量(numlabs), 对多数应用通过{labindex,numlabs}信息即可对整体计算进行任务划分每个worker对应一个任务所有任务完成后可将计算结果进行合并最终获取最后结果。SPMD模式还可以支持worker之间的信息交换暂时没有用到
Matlab中用parpool命令启动worker池环境! 命令细节查看parpool文档 逻辑示意
有nPNG张图片放在工作目录下需要对每张图片进行单独OCR识别结果写到文本文件内图片识别顺序不重要。
%.... 初始化...%获取所有png图片列表
pngs dir(strcat(imgDir,\*.png);
nPnglength(pngs);spmd%worker的ranklabindex %outfile,fp都是worker私有的outfile[spmd.dir/outfile.txt num2str(labindex,%02d)];fpfopen(outfile,wt);%依据labindex,numlabs对数据集进行worker之间任务划分for ilabindex:numlabs:nPngpngstrcat(pngs(i).folder, \, pngs(i).name);%...图像前处理...ocr(png,fp,...);end fclose(fp);
end %.....收尾汇总....