-
Notifications
You must be signed in to change notification settings - Fork 486
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fusion time耗时异常 #136
Comments
是fusion阶段耗时异常还是matching阶段? |
是fusion阶段的第一次耗时计算。 |
想了下,有个地方很可能会产生波动:内存分配 |
可以通过c++的placement new实现 |
整体耗时可能也有点帮助 |
嗯,用placement new 替代buffer_0,buffer_1分配固定内存难以入手。 |
placement new平时用的少,介绍是说在已经分配的内存上创建对象。 |
需要改一些代码,有时间我看看 |
嗯,非常感谢,期待。 |
简单改了下,试试这个fix_memo branch |
融合进行了调试和测试,几乎没有多大变化,依然是第一次fusion time不稳定,有突变。 |
This comment has been minimized.
This comment has been minimized.
调试参数设置:const int tileRows = 32; |
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
没有在GPU上跑。这样的话需要更细致的profile看看,可以这样:
|
有个描述需要更正一下;之前那个在windows跑的耗时效果是没有加入opemmp支持的。以下是加入opemmp支持的fusion time和match time情况,耗时减半;应该是跟opemmp有关的。
…------------------ 原始邮件 ------------------
发件人: "meiqua/shape_based_matching" <[email protected]>;
发送时间: 2021年3月8日(星期一) 晚上8:06
收件人: "meiqua/shape_based_matching"<[email protected]>;
抄送: "正在输入........"<[email protected]>;"Author"<[email protected]>;
主题: Re: [meiqua/shape_based_matching] fusion time耗时异常 (#136)
没有在GPU上跑。这样的话需要更细致的profile看看,可以这样:
先把openmp关掉看一下,确认是不是openmp带来的问题
更细致地对fusion每个阶段计算耗时,尽量缩小范围看哪一部分跳动
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or unsubscribe.
|
This comment has been minimized.
This comment has been minimized.
在windows上加入opemmp跑出来的效果比较明显。在linux下加与不加差不多,是不是GPU没有调用起来? |
linux默认加上了,GPU本来就没用到 |
基本可以确定是match函数里面的process函数耗时异常。 |
process函数里面有好几处关于_OPENMP的宏定义判断。应该是_OPENMP下的代码都没有跑起来。 |
关掉openmp,时间会波动吗 |
process是主要运算函数,波动的话肯定是这个。可以在里面测试下各部分耗时 |
在我工作电脑上不会。开发板上arm-linux一样会。我用的是QT来下代码编译的,QT下怎么配置才能使_OPENMP下的代码跑起来? |
一般加-fopenmp会自动定义这个宏。波动的话,先不开openmp测一下时间,这样单线程比如容易确定是哪部分 |
嗯。谢谢
…------------------ 原始邮件 ------------------
发件人: "meiqua/shape_based_matching" <[email protected]>;
发送时间: 2021年3月8日(星期一) 晚上9:13
收件人: "meiqua/shape_based_matching"<[email protected]>;
抄送: "正在输入........"<[email protected]>;"Author"<[email protected]>;
主题: Re: [meiqua/shape_based_matching] fusion time耗时异常 (#136)
一般加-fopenmp会自动定义这个宏。波动的话,先不开openmp测一下时间,这样单线程比如容易确定是哪部分
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or unsubscribe.
|
你好,通过调试,基本可以确定是哪个代码段引发运行耗时不稳定。定位到的代码断: |
以上调试是关闭了openmp了的。 |
主要运算就是这个update;fix memo branch新加入了计时的代码,可以试试update里哪一步波动最大 |
之前说的有点问题,是tile划分越细,fusion重复计算的部分越多,但同时更利于并行; |
谢谢,我把cols缩小一半,整体耗时会多一点,但整体波动稳定了一些。我想在fusion处理指定大核心处理,应该怎么处理?
…------------------ 原始邮件 ------------------
发件人: "meiqua/shape_based_matching" ***@***.***>;
发送时间: 2021年3月12日(星期五) 晚上8:03
***@***.***>;
***@***.******@***.***>;
主题: Re: [meiqua/shape_based_matching] fusion time耗时异常 (#136)
之前说的有点问题,是tile划分越细,fusion重复计算的部分越多,但同时更利于并行;
一般tile不要这么大,极端点最大的tile就是普通的算法了,把cols改小试试;
我测下来的经验是threads超过两倍CPU核心就没有太多提升,更多的话稍有下降。
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or unsubscribe.
|
openmp只提供了环境变量设置的方法。如果想代码里绑定,可能得自己写个thread pool然后参考前面那个链接设置 |
嗯,谢谢。在matchClass中有段代码,如下:
#pragma omp declare reduction \
(omp_insert: std::vector<Match>: omp_out.insert(omp_out.end(), omp_in.begin(), omp_in.end()))
#pragma omp parallel for reduction(omp_insert:matches)
在windows上的VS2017上报错 ”错误 C3001 “declare”: 应为 OpenMP 指令名称
错误 C3036 “omp_insert”: OpenMP“reduction”子句中的运算符标记无效”
我在linux上编译又没有问题,是不是哪里没有配置好?还有,能不能解释一下这段代码在matchClass中的用意?谢谢
…------------------ 原始邮件 ------------------
发件人: "meiqua/shape_based_matching" ***@***.***>;
发送时间: 2021年3月12日(星期五) 晚上9:10
***@***.***>;
***@***.******@***.***>;
主题: Re: [meiqua/shape_based_matching] fusion time耗时异常 (#136)
openmp只提供了环境变量设置的方法。如果想代码里绑定,可能得自己写个thread pool然后参考前面那个链接设置
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or unsubscribe.
|
算法配置基本跟linux上一致,但是在windows上跑算法检测耗时波动有90-210ms左右,我查了cpu是双核四线程的。const int tileRows = 128;
const int tileCols = 512;
const int num_threads_ = 4; 在windows下,这几个参数这样配置会不会有问题?能优化吗?谢谢。
…------------------ 原始邮件 ------------------
发件人: "meiqua/shape_based_matching" ***@***.***>;
发送时间: 2021年3月12日(星期五) 晚上8:03
***@***.***>;
***@***.******@***.***>;
主题: Re: [meiqua/shape_based_matching] fusion time耗时异常 (#136)
之前说的有点问题,是tile划分越细,fusion重复计算的部分越多,但同时更利于并行;
一般tile不要这么大,极端点最大的tile就是普通的算法了,把cols改小试试;
我测下来的经验是threads超过两倍CPU核心就没有太多提升,更多的话稍有下降。
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or unsubscribe.
|
可以参考windows配置。波动的话,之前在windows上不是跑的还行吗? |
之前是在6核心6线程的我工作电脑上跑,耗时比较稳定,耗时也比较少,整个检测过程也就24ms左右。一样的程序,在2核心4线程上跑出来的效果完全不一样,耗时不稳定,波动比较大,而且耗时增加5-8倍。
…------------------ 原始邮件 ------------------
发件人: "meiqua/shape_based_matching" ***@***.***>;
发送时间: 2021年3月13日(星期六) 晚上9:48
***@***.***>;
***@***.******@***.***>;
主题: Re: [meiqua/shape_based_matching] fusion time耗时异常 (#136)
可以参考windows配置。波动的话,之前在windows上不是跑的还行吗?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or unsubscribe.
|
可以把参数详细写下 然后测测单线程的情况
…---原始邮件---
发件人: ***@***.***>
发送时间: 2021年3月15日(周一) 上午8:48
收件人: ***@***.***>;
抄送: ***@***.******@***.***>;
主题: Re: [meiqua/shape_based_matching] fusion time耗时异常 (#136)
之前是在6核心6线程的我工作电脑上跑,耗时比较稳定,耗时也比较少,整个检测过程也就24ms左右。一样的程序,在2核心4线程上跑出来的效果完全不一样,耗时不稳定,波动比较大,而且耗时增加5-8倍。
------------------&nbsp;原始邮件&nbsp;------------------
发件人: "meiqua/shape_based_matching" ***@***.***&gt;;
发送时间:&nbsp;2021年3月13日(星期六) 晚上9:48
***@***.***&gt;;
***@***.******@***.***&gt;;
主题:&nbsp;Re: [meiqua/shape_based_matching] fusion time耗时异常 (#136)
可以参考windows配置。波动的话,之前在windows上不是跑的还行吗?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or unsubscribe.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub, or unsubscribe.
|
This comment has been minimized.
This comment has been minimized.
打开openmp,use_simd = true情况下,第一次fusion time在30-105ms波动,但是大部分在30-50ms波动;
关闭openmp,use_simd = false情况下,第一次fusion time在120-160ms波动,但是大部分在120-140ms波动。
…------------------ 原始邮件 ------------------
发件人: "meiqua/shape_based_matching" ***@***.***>;
发送时间: 2021年3月16日(星期二) 上午9:55
***@***.***>;
***@***.******@***.***>;
主题: Re: [meiqua/shape_based_matching] fusion time耗时异常 (#136)
可以把参数详细写下 然后测测单线程的情况
---原始邮件---
发件人: ***@***.***&gt;
发送时间: 2021年3月15日(周一) 上午8:48
收件人: ***@***.***&gt;;
抄送: ***@***.******@***.***&gt;;
主题: Re: [meiqua/shape_based_matching] fusion time耗时异常 (#136)
之前是在6核心6线程的我工作电脑上跑,耗时比较稳定,耗时也比较少,整个检测过程也就24ms左右。一样的程序,在2核心4线程上跑出来的效果完全不一样,耗时不稳定,波动比较大,而且耗时增加5-8倍。
------------------&amp;nbsp;原始邮件&amp;nbsp;------------------
发件人: "meiqua/shape_based_matching" ***@***.***&amp;gt;;
发送时间:&amp;nbsp;2021年3月13日(星期六) 晚上9:48
***@***.***&amp;gt;;
***@***.******@***.***&amp;gt;;
主题:&amp;nbsp;Re: [meiqua/shape_based_matching] fusion time耗时异常 (#136)
可以参考windows配置。波动的话,之前在windows上不是跑的还行吗?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or unsubscribe.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub, or unsubscribe.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or unsubscribe.
|
This comment has been minimized.
This comment has been minimized.
加一个环境变量 OMP_PROC_BIND=true 试试? |
windows下单加这个环境没啥变化。
…------------------ 原始邮件 ------------------
发件人: "meiqua/shape_based_matching" ***@***.***>;
发送时间: 2021年3月17日(星期三) 晚上9:48
***@***.***>;
***@***.******@***.***>;
主题: Re: [meiqua/shape_based_matching] fusion time耗时异常 (#136)
加一个环境变量 OMP_PROC_BIND=true 试试?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or unsubscribe.
|
windows下,指定cpu好像没有优势,每个核心都一样。通过任务管理器设定程序运行级别:实时。还是波动比较大。
…------------------ 原始邮件 ------------------
发件人: "meiqua/shape_based_matching" ***@***.***>;
发送时间: 2021年3月17日(星期三) 晚上9:48
***@***.***>;
***@***.******@***.***>;
主题: Re: [meiqua/shape_based_matching] fusion time耗时异常 (#136)
加一个环境变量 OMP_PROC_BIND=true 试试?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or unsubscribe.
|
shape_based_matching各分支核心算法是line-2d?不是line-mod?
…------------------ 原始邮件 ------------------
发件人: "meiqua/shape_based_matching" ***@***.***>;
发送时间: 2021年3月17日(星期三) 晚上9:48
***@***.***>;
***@***.******@***.***>;
主题: Re: [meiqua/shape_based_matching] fusion time耗时异常 (#136)
加一个环境变量 OMP_PROC_BIND=true 试试?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or unsubscribe.
|
This comment has been minimized.
This comment has been minimized.
有意思的现象。同样的情况,限制成一个核上跑的单线程还会这样吗? |
OMP_PROC_BIND可以让线程绑定到核,对缓存比较友好。可以设置OMP_DISPLAY_ENV=true看看前面设置成功了没 |
This comment has been minimized.
This comment has been minimized.
在windows上怎么确认绑定到单核了?可以试试这个链接 |
我是通过任务管理器指定我的程序在哪个核心上跑的。
…------------------ 原始邮件 ------------------
发件人: "meiqua/shape_based_matching" ***@***.***>;
发送时间: 2021年3月27日(星期六) 上午10:59
***@***.***>;
***@***.******@***.***>;
主题: Re: [meiqua/shape_based_matching] fusion time耗时异常 (#136)
在windows上怎么确认绑定到单核了?可以试试这个链接
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or unsubscribe.
|
我在windows10的dos命令行界面输入set OMP_DISPLAY_ENV=true,啥信息都看不到。
…------------------ 原始邮件 ------------------
发件人: "meiqua/shape_based_matching" ***@***.***>;
发送时间: 2021年3月26日(星期五) 晚上10:00
***@***.***>;
***@***.******@***.***>;
主题: Re: [meiqua/shape_based_matching] fusion time耗时异常 (#136)
OMP_PROC_BIND可以让线程绑定到核,对缓存比较友好。可以设置OMP_DISPLAY_ENV=true看看前面设置成功了没
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or unsubscribe.
|
操作跟你这个提供的链接几乎一样。
…------------------ 原始邮件 ------------------
发件人: "meiqua/shape_based_matching" ***@***.***>;
发送时间: 2021年3月27日(星期六) 上午10:59
***@***.***>;
***@***.******@***.***>;
主题: Re: [meiqua/shape_based_matching] fusion time耗时异常 (#136)
在windows上怎么确认绑定到单核了?可以试试这个链接
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or unsubscribe.
|
不清楚win10上为什么设置OMP_DISPLAY_ENV=true环境变量,启动程序后,没有OMP相关的打印信息,在两台win10电脑上试了都不行。而linux上设置了这个变量,启动同样的程序,就有OMP相关的变量信息打印。
------------------ 原始邮件 ------------------
发件人: "meiqua/shape_based_matching" ***@***.***>;
发送时间: 2021年3月26日(星期五) 晚上10:00
***@***.***>;
***@***.******@***.***>;
主题: Re: [meiqua/shape_based_matching] fusion time耗时异常 (#136)
OMP_PROC_BIND可以让线程绑定到核,对缓存比较友好。可以设置OMP_DISPLAY_ENV=true看看前面设置成功了没
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or unsubscribe.
|
你好!github上不去,只好在邮箱发信息请教。 我经过一段时间查找,发现windows下VS2015或VS2017带的openmp版本是2.0版本,openmp4.0以上版本才可以设置OMP_DISPLAY_ENV环境变量,查看openmp的环境变量配置,我在linux上export OMP_DISPLAY_ENV=true,启动程序是可以看到openmp的环境变量配置的。OMP_PROC_BIND配置为ture,测试是没有多大效果,windows和linux都一样。
…------------------ 原始邮件 ------------------
发件人: "meiqua/shape_based_matching" ***@***.***>;
发送时间: 2021年3月27日(星期六) 上午10:59
***@***.***>;
***@***.******@***.***>;
主题: Re: [meiqua/shape_based_matching] fusion time耗时异常 (#136)
在windows上怎么确认绑定到单核了?可以试试这个链接
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or unsubscribe.
|
所以从测试结果看,i5四代的CPU上windows会波动,linux正常,i5九代都正常? |
This comment has been minimized.
This comment has been minimized.
差一点的CPU波动大,感觉是系统调度的问题?可以试试设置进程优先级 |
好的,我试试,谢谢。
…------------------ 原始邮件 ------------------
发件人: "meiqua/shape_based_matching" ***@***.***>;
发送时间: 2021年4月7日(星期三) 中午12:58
***@***.***>;
***@***.******@***.***>;
主题: Re: [meiqua/shape_based_matching] fusion time耗时异常 (#136)
差一点的CPU波动大,感觉是系统调度的问题?可以试试设置进程优先级
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or unsubscribe.
|
修改为 use_simd = false后, 发现推理耗时和use_simd=true基本一样的 500万图像 差不多200毫秒。 |
你好,根据你之前的调试建议,我在arm_linux环境上调整const int tileRows = 32;const int tileCols = 256;const int num_threads_ = 4;这几个参数;发现检测耗时,每过一会有fusion time耗时会异常,差别有60-100ms,一般会有10-30ms偏差.调了比较长时间,问题依然没有得到解决,请问还有其它地方可以优化吗?谢谢。
The text was updated successfully, but these errors were encountered: