请教Linux下使用Openmp的问题

teribithia 2010-05-13 08:48:09
在Linux下写了一段代码:
#include <stdio.h>
#include <omp.h>
int main( int argc, char **argv )
{
int rank, size;
while(1)
{
#pragma omp parallel private(rank)
{
rank= omp_get_thread_num();
size= omp_get_num_threads();
printf( "Hello world! I'm %d of %d\n", rank, size );
}
usleep(1000*10);
}
return 0;
}
不知道这样写有什么问题没有?我的cpu是4核的。
编译语句:g++ -fopenmp -o test test.cpp 通过
当我测试线程的CPU使用率的时候发现派生的线程CPU使用率比主线程要高得多,大概数据如下:
$ps H -eo pid,tid,%cpu,cmd --sort=tid
pid tid %cpu
2235 2235 15.4
2235 2236 99.0
2235 2237 98.7
2235 2238 100.0
我在windows下测试的程序如下:
#include <windows.h>
#include <stdio.h>
#include <omp.h>
int main( int argc, char **argv )
{
int rank, size;
while(1)
{
#pragma omp parallel private(rank)
{
rank= omp_get_thread_num();
size= omp_get_num_threads();
printf( "Hello world! I'm %d of %d\n", rank, size );
}
Sleep(1);
}
return 0;
}
派生线程比主线程的CPU使用率要低,好像结果是合理的。请问Linux下是什么原因导致的呢?
...全文
276 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
weichao2010 2011-04-02
  • 打赏
  • 举报
回复
我也遇到了核lz难题,求高手指点
liqi4960710 2010-05-14
  • 打赏
  • 举报
回复
ding ...............

567

社区成员

发帖
与我相关
我的任务
社区描述
英特尔® 边缘计算,聚焦于边缘计算、AI、IoT等领域,为开发者提供丰富的开发资源、创新技术、解决方案与行业活动。
社区管理员
  • 英特尔技术社区
  • shere_lin
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧