TNN icon indicating copy to clipboard operation
TNN copied to clipboard

SetCpuNumThreads

Open StrugglingForBetter opened this issue 4 years ago • 10 comments

1. 环境(environment)

  • Build OS and Version: Mac/Ubuntu/Centos/Windows
  • RunTime OS Version: Linux/Android/IOS
  • RunTime DEVICE: ARM/OPENCL/METAL

2. Github版本

  • branch:
  • commit(optional): 2e9e97cc4ef479af1e820f0c24c03ffa21926540 (HEAD)

3. 编译方式(compile method) CMake完整编译参数(full cmake arguments)

4. 编译日志(build log)

将日志粘贴在这里
Paste log here or pastebin

5. 详细描述bug 情况 (Describe the bug)

6. 运行日志(runtime log)

将日志粘贴在这里
Paste log here or pastebin

7. 截图(Screenshots)

将截图粘贴在这里
Paste screenshorts here or pastebin

我们希望在win10上用多线程跑一个算法,初始化的过程中加入以下两句 status = instance->SetCpuNumThreads(option->num_thread); instance_ = instance;

而且我们编译库的时候打开了OPENMP, 就是-DTNN_OPENMP_ENABLE=ON ^

但是结果是设置了num_thread为4, 8, 都没用,似乎和等于1跑起来没差别,看CPU占用率也比较低,没有充分发挥CPU的作用

StrugglingForBetter avatar Aug 12 '21 06:08 StrugglingForBetter

请问你们是通过什么方式编译的TNN?直接用examples or scripts中的脚本编译还是怎么? -DTNN_OPENMP_ENABLE=ON 选项是加在编译TNN库的时候吗?使用脚本编译的话,这个选项需要加在 TNN根目录/scripts/build_msvc_native.bat里面

powerpwang avatar Aug 12 '21 07:08 powerpwang

就是在scripts/build_msvc_native.bat里面加了-DTNN_OPENMP_ENABLE=ON

StrugglingForBetter avatar Aug 12 '21 12:08 StrugglingForBetter

  1. 请问下有尝试过使用TNNTest测试一些基础的网络(mobilenet, squeezenet之类)吗?运行完scripts/build_msvc_native.bat后会编译出TNNTest测试工具,然后例如执行 ./TNNTest -mp mobilenetv2.tnnproto -dt X86 -ic 10 -th 4 通过-th 4指定4线程,测试一下是否有多线程加速。
  2. 如果上述方式能观察到多线程加速效果,但是切换到你们自己的模型却没有加速,可以提供一下tnnproto模型文件。
  3. 如果上述方式也没有观察到多线程加速效果,麻烦提供一下编译环境信息,例如win10 + vs2019之类,我尝试复现一下。

powerpwang avatar Aug 16 '21 03:08 powerpwang

你好!感谢回复!环境就是win10+vs2019。

请问可以给我其他更加便捷的联系方式吗?这样有利于及时交流。另外一方面也可以更加方便的传给你模型。谢谢!

StrugglingForBetter avatar Aug 16 '21 05:08 StrugglingForBetter

  1. 请问下有尝试过使用TNNTest测试一些基础的网络(mobilenet, squeezenet之类)吗?运行完scripts/build_msvc_native.bat后会编译出TNNTest测试工具,然后例如执行 ./TNNTest -mp mobilenetv2.tnnproto -dt X86 -ic 10 -th 4 通过-th 4指定4线程,测试一下是否有多线程加速。
  2. 如果上述方式能观察到多线程加速效果,但是切换到你们自己的模型却没有加速,可以提供一下tnnproto模型文件。
  3. 如果上述方式也没有观察到多线程加速效果,麻烦提供一下编译环境信息,例如win10 + vs2019之类,我尝试复现一下。

@powerpwang 我这边做了测试,最后出来结果有点难以想象,我分别测试了th = 1, th= 4的情况, 最后出来th=4的耗时反而比th=1的耗时大,不知道为什么,下面是结果:

-th = 1: TNN Benchmark time cost: min = 28019.049 ms | max = 29253.479 ms | avg = 28275.527 ms

-th = 4: TNN Benchmark time cost: min = 42279.504 ms | max = 45248.527 ms | avg = 43684.633 ms

请问 模型要怎么发给你了?能提供一个比较好的方式吗?谢谢!

StrugglingForBetter avatar Aug 18 '21 03:08 StrugglingForBetter

@powerpwang 另外这里还有 th = 8的结果: TNN Benchmark time cost: min = 48603.375 ms | max = 49630.074 ms | avg = 48852.613 ms

看起来,线程越多反而越慢

StrugglingForBetter avatar Aug 18 '21 03:08 StrugglingForBetter

这个是不是没有使用到多线程? @StrugglingForBetter 请问是用的TNN x86后端是么? 没有用openvino的backend?

violet17 avatar Sep 02 '21 03:09 violet17

@powerpwang native模式,是不是没有使用多线程加速呢?

violet17 avatar Sep 07 '21 06:09 violet17

@powerpwang 另外这里还有 th = 8的结果: TNN Benchmark time cost: min = 48603.375 ms | max = 49630.074 ms | avg = 48852.613 ms

看起来,线程越多反而越慢

遇到了同样问题, 线程越多越慢? 请问解决了吗

sdnusqy-art avatar Jan 06 '22 09:01 sdnusqy-art

x86上如果要使用多线程加速,建议使用openvino作为backend,不使用x86 native。

powerpwang avatar Jan 06 '22 09:01 powerpwang