MindSpore开启线程池运行日志

65 阅读1分钟

开启日志

MindSpore线程池相关代码主要在mindspore/core/mindrt/src/thread文件夹下的threadpool.ccactor_threadpool.ccparallel_threadpool.cc,使用的日志宏如下图:

image.png 默认是没有定义"THREAD_POOL_DEBUG"这个宏的,所以日志未开启,那么加上这个宏定义:

image.png 这就可以编译出版本了。

编译出版本

我在编译时遇到一个问题,如下:

In file included from /home/jiangdong/workspace/mindspore/mindspore/core/mindrt/include/thread/threadpool.h:31,
                 from /home/jiangdong/workspace/mindspore/mindspore/core/mindrt/src/thread/threadpool.cc:21:
/home/jiangdong/workspace/mindspore/mindspore/core/mindrt/src/thread/threadpool.cc: In member function ‘void mindspore::Worker::SetAffinity()’:
/home/jiangdong/workspace/mindspore/mindspore/core/mindrt/include/thread/threadlog.h:27:12: error: format ‘%s’ expects argument of type ‘char*’, but argument 4 has type ‘std::string’ {aka ‘std::basic_string<char>’} [-Werror=format=]
   27 |   { printf("[INFO] %s|%d: " #content "\r\n", __func__, __LINE__, ##args); }
      |            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/jiangdong/workspace/mindspore/mindspore/core/mindrt/src/thread/threadpool.cc:89:3: note: in expansion of macro ‘THREAD_INFO’
   89 |   THREAD_INFO("Worker pthread_setaffinity_np, mask %s", MaskToStr(&mask_));

做下图红圈中修改即可解决:

image.png 然后在mindspore顶层目录下执行bash build.sh -e cpu -S on 重新出版本

执行程序验证

由于产生的日志可能较多,我将日志输出到了文件中,做如下设置即可:

export GLOG_logtostderr=0 (如果是1,日志会输出到控制台)

运行一个基于mindspore的demo程序后,可以看到如下日志,显示了任务执行相关信息:

image.png 上图红圈内in multi thread or not:1的意思是使用了多线程。 这样,就可以自己添加日志进一步研究线程池机制了