Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/146.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Caffe中的批处理模式-无性能增益_C++_Image Processing_Deep Learning_Caffe - Fatal编程技术网

C++ Caffe中的批处理模式-无性能增益

C++ Caffe中的批处理模式-无性能增益,c++,image-processing,deep-learning,caffe,C++,Image Processing,Deep Learning,Caffe,接下来,我重新实现了我的图像处理代码,一次发送10个图像(即,我现在将输入blob的num属性设置为100,而不是10) 然而,处理这批产品所需的时间是原来的10倍。这意味着我没有得到任何性能提升 这是合理的还是我做错了什么 我正在CPU模式下运行Caffe。不幸的是,GPU模式不是我的选择。更新:Caffe现在本机支持在使用多个GPU时并行处理多个图像。虽然基于当前GPU并行性的实现似乎相对简单,但目前还没有类似的支持在多个CPU上进行并行处理 考虑到并行化的主要问题是在训练过程中需要同步,如

接下来,我重新实现了我的图像处理代码,一次发送10个图像(即,我现在将输入blob的num属性设置为100,而不是10)

然而,处理这批产品所需的时间是原来的10倍。这意味着我没有得到任何性能提升

这是合理的还是我做错了什么


我正在CPU模式下运行Caffe。不幸的是,GPU模式不是我的选择。

更新:Caffe现在本机支持在使用多个GPU时并行处理多个图像。虽然基于当前GPU并行性的实现似乎相对简单,但目前还没有类似的支持在多个CPU上进行并行处理

考虑到并行化的主要问题是在训练过程中需要同步,如果你只想并行处理图像(而不是训练模型),那么你可以将同一网络的几个副本加载到内存中(无论是通过Python处理多线程还是C++多线程),并在不同的网络上处理每个图像。这将是简单和相当有效的,特别是如果你加载一次网络,然后只是处理大量的图像。不过,GPU的速度要快得多:)


Caffe不会并行处理多个图像,批量处理多个图像所节省的唯一时间是在Caffe的框架之间来回传输图像数据所需的时间,这在处理GPU时可能非常重要

IIRC有几次尝试使Caffe进程映像并行,但大多数集中在GPU实现上(CUDNN、CUDA流等),很少尝试向CPU代码添加并行性(OpenBLAS的多线程模式,或仅在多线程上运行)。其中我认为目前只有CUDNN选项是Caffe稳定版本的一部分,但显然需要GPU。您可以尝试在Caffe的github页面上查看关于此问题的一个请求,看看它是否适合您,但请注意,它可能会导致您当前版本的兼容性问题

这是我过去使用过的一个版本,尽管它已不再维护:

在上述问题的最后一条评论中,我还注意到,在这个pull请求中,CPU代码也有一些加速,尽管我自己从未尝试过: