由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Thoughts版 - OpenMP 求救。。。
相关主题
对复古的思考Re: Makefile help!( -g option)
linux 或者 perl 高手们啊c++ thread 求助 (转载)
Re: 又尼玛延迟了dropbox工作的机器不能安装,大家是如何解决的?
求教关于makefile可选target的问题ask a question about compile shared library using libtool (转载)
[转载] My makefile can not work, why?OpenMP 求救。。。 (转载)
Makefile link lib questionIntel HD2000显卡Linux驱动问题?
Questions about MAKEFILEmakefile 里面那个-D flags的问题
请教一个makefile 小问题ask a question about compile shared library using libtool
相关话题的讨论汇总
话题: thread话题: world话题: hello话题: threads话题: omp
进入Thoughts版参与讨论
1 (共1页)
b*****l
发帖数: 9499
1
在学 OpenMP,第一步就不通:设多线程失败。。。
TestOMP.cpp 的 code 很简单:开 5 个线程,每个介绍一下自己,就完事了.
#include
#include
using namespace std;
main () {
omp_set_num_threads(5);
cout << "Fork! " << endl;
#pragma omp parallel
{
// Obtain and print thread id
cout<< "Hello World from thread = " << omp_get_thread_num()
<< " of " << omp_get_num_threads() << endl;
// Only master thread does this
if (omp_get_thread_num() == 0)
cout << "Master thread: number of threads = " <<
omp_get_num_threads() << endl;
} // All threads join master thread and terminate
cout << "Joint! " << endl;
}
结果咋整都是一个线程:
$ make
g++ -c -o TestOMP.o TestOMP.cpp
g++ -o TestOMP TestOMP.o -I. -g -O -fopenmp -lm
$ ./TestOMP
Fork!
Hello World from thread = 0 of 1
Master thread: number of threads = 1
Joint!
num_threads(5) 也试过了,不成。觉得俺哪里理解错了。。。
x******n
发帖数: 9057
2
晕死,头一回听说openmp

【在 b*****l 的大作中提到】
: 在学 OpenMP,第一步就不通:设多线程失败。。。
: TestOMP.cpp 的 code 很简单:开 5 个线程,每个介绍一下自己,就完事了.
: #include
: #include
: using namespace std;
: main () {
: omp_set_num_threads(5);
: cout << "Fork! " << endl;
: #pragma omp parallel
: {

r*********g
发帖数: 5450
3
open马屁?

【在 x******n 的大作中提到】
: 晕死,头一回听说openmp
x******n
发帖数: 9057
4
nod,马屁这么高深的学问,不open source怎么行

【在 r*********g 的大作中提到】
: open马屁?
b*****l
发帖数: 9499
5
唉,唉,帮看看吧。。。

【在 x******n 的大作中提到】
: nod,马屁这么高深的学问,不open source怎么行
g*******1
发帖数: 8758
6
Lol, 所见略同

【在 r*********g 的大作中提到】
: open马屁?
x******n
发帖数: 9057
7
我完全不懂啊这玩意。。。

【在 b*****l 的大作中提到】
: 唉,唉,帮看看吧。。。
g*******1
发帖数: 8758
8
haha,搜索了一下,还有OpenMPI
linux版不是给了方案吗,我试了试,
~/temp :] g++ -fopenmp -c -o mp.o mp.cpp
~/temp :] g++ -o mp mp.o -I. -g -O -fopenmp -lm
~/temp :] ./mp
Fork!
Hello World from thread = Hello World from thread = Hello World from thread
= 1 of 35 of 5
2 of 5
Hello World from thread = 4 of 5
Hello World from thread = 0 of 5
Master thread: number of threads = 5
Joint!

【在 b*****l 的大作中提到】
: 唉,唉,帮看看吧。。。
b*****l
发帖数: 9499
9
眼泪哗哗的。。。为啥我试就不行啊?。。。

thread

【在 g*******1 的大作中提到】
: haha,搜索了一下,还有OpenMPI
: linux版不是给了方案吗,我试了试,
: ~/temp :] g++ -fopenmp -c -o mp.o mp.cpp
: ~/temp :] g++ -o mp mp.o -I. -g -O -fopenmp -lm
: ~/temp :] ./mp
: Fork!
: Hello World from thread = Hello World from thread = Hello World from thread
: = 1 of 35 of 5
: 2 of 5
: Hello World from thread = 4 of 5

b*****l
发帖数: 9499
10
在两台机器上试过了,都不 work,也不报错。。。最烦这种玩暧昧的 bug 了,就像遇
到久历情场的 mm。。。

thread

【在 g*******1 的大作中提到】
: haha,搜索了一下,还有OpenMPI
: linux版不是给了方案吗,我试了试,
: ~/temp :] g++ -fopenmp -c -o mp.o mp.cpp
: ~/temp :] g++ -o mp mp.o -I. -g -O -fopenmp -lm
: ~/temp :] ./mp
: Fork!
: Hello World from thread = Hello World from thread = Hello World from thread
: = 1 of 35 of 5
: 2 of 5
: Hello World from thread = 4 of 5

相关主题
Makefile link lib questionRe: Makefile help!( -g option)
Questions about MAKEFILEc++ thread 求助 (转载)
请教一个makefile 小问题dropbox工作的机器不能安装,大家是如何解决的?
进入Thoughts版参与讨论
x******n
发帖数: 9057
11
hahaha,cong,好好享受暧昧吧

【在 b*****l 的大作中提到】
: 在两台机器上试过了,都不 work,也不报错。。。最烦这种玩暧昧的 bug 了,就像遇
: 到久历情场的 mm。。。
:
: thread

b*****l
发帖数: 9499
12
有木有!!!!!!!!!!!!!!!!!
还是不能设 thread 数目。去掉相应行,work 了,但每次跑起来,threads 数目不等
,看系统的心情。跑了三次,分别是 15,17,16 个 threads.
#include
#include
int main () {
omp_set_dynamic(1);
printf("omp_get_dynamic: %d.\n",omp_get_dynamic());
printf("omp_get_max_threads: %d.\n", omp_get_max_threads());
/* omp_set_num_threads(10); */
/* Fork a team of threads with each thread having a private tid variable */
printf("Fork! \n");
#pragma omp parallel
{
// Obtain and print thread id
printf("Hello World from thread = %d of %d.\n",
omp_get_thread_num(), omp_get_num_threads());
// Only master thread does this
if (omp_get_thread_num() == 0)
printf("Master thread: number of threads = %d.\n", omp_get_num_threads
());
} // All threads join master thread and terminate
printf("Joint! \n");
return 0;
}
$ ./CTestOMP
omp_get_dynamic: 1.
omp_get_max_threads: 48.
Fork!
Hello World from thread = 0 of 17.
Hello World from thread = 5 of 17.
Hello World from thread = 8 of 17.
Hello World from thread = 1 of 17.
Hello World from thread = 13 of 17.
Hello World from thread = 9 of 17.
Hello World from thread = 2 of 17.
Hello World from thread = 7 of 17.
Hello World from thread = 3 of 17.
Hello World from thread = 6 of 17.
Hello World from thread = 11 of 17.
Hello World from thread = 12 of 17.
Hello World from thread = 4 of 17.
Hello World from thread = 14 of 17.
Hello World from thread = 16 of 17.
Hello World from thread = 15 of 17.
Hello World from thread = 10 of 17.
Master thread: number of threads = 17.
Joint!
另外,cpp 的输出和谷一的那个一样地乱。看来多线程输出还是 printf 比较靠谱。

【在 x******n 的大作中提到】
: hahaha,cong,好好享受暧昧吧
g*******1
发帖数: 8758
13
这个mm很傲娇嘛

【在 b*****l 的大作中提到】
: 有木有!!!!!!!!!!!!!!!!!
: 还是不能设 thread 数目。去掉相应行,work 了,但每次跑起来,threads 数目不等
: ,看系统的心情。跑了三次,分别是 15,17,16 个 threads.
: #include
: #include
: int main () {
: omp_set_dynamic(1);
: printf("omp_get_dynamic: %d.\n",omp_get_dynamic());
: printf("omp_get_max_threads: %d.\n", omp_get_max_threads());
: /* omp_set_num_threads(10); */

g*******1
发帖数: 8758
14
怎么这么倒霉,我系统只装了普通的编译环境,也一试就成功了

【在 b*****l 的大作中提到】
: 在两台机器上试过了,都不 work,也不报错。。。最烦这种玩暧昧的 bug 了,就像遇
: 到久历情场的 mm。。。
:
: thread

b*****l
发帖数: 9499
15
阶段性胜利了:在 .c 下面,makefile 和 omp_set_num_threads 管用,num_threads
不管用。在 .cpp 下面,omp_set_num_threads 和 num_threads 管用,makefile 不管
用(所以只好写了个 bash script)。。。
大家帮我看看我的 makefile 哪里出错了吧。一个叫做 CMakefile,一个叫做
Makefile,code 一样(除了指向的文件名),结果不一样,后者的 g++ 后面多了些空
格,最后少了一堆参数。。。
$ make -f CMakefile
gcc -c -o CTestOMP.o CTestOMP.c -I. -g -O -fopenmp
gcc -o CTestOMP CTestOMP.o -I. -g -O -fopenmp -lm
$ make -f Makefile
g++ -c -o TestOMP.o TestOMP.cpp
g++ -o TestOMP TestOMP.o -I. -g -O -fopenmp -Wall -lm
#########################################
CMakefile:
IDIR = .
CC = gcc
CFLAGS = -I$(IDIR) -g -O -fopenmp
ODIR = .
LDIR = .
LIBS = -lm
_DEPS =
DEPS =$(patsubst %,$(IDIR)/%,$(_DEPS))
_OBJ = CTestOMP.o
OBJ = $(patsubst %,$(ODIR)/%,$(_OBJ))
$(ODIR)/%.o: %.c $(DEPS)
$(CC) -c -o $@ $< $(CFLAGS)
CTestOMP: $(OBJ)
$(CC) -o $@ $^ $(CFLAGS) $(LIBS)
.PHONY: clean
clean:
rm -f $(ODIR)/*.o *~ core $(INCDIR)/*~
#########################################
Makefile:
IDIR = .
CC = g++
CFLAGS = -I$(IDIR) -g -O -fopenmp -Wall
ODIR = .
LDIR = .
LIBS = -lm
_DEPS =
DEPS =$(patsubst %,$(IDIR)/%,$(_DEPS))
_OBJ = TestOMP.o
OBJ = $(patsubst %,$(ODIR)/%,$(_OBJ))
$(ODIR)/%.o: %.c $(DEPS)
$(CC) -c -o $@ $< $(CFLAGS)
TestOMP: $(OBJ)
$(CC) -o $@ $^ $(CFLAGS) $(LIBS)
.PHONY: clean
clean:
rm -f $(ODIR)/*.o *~ core $(INCDIR)/*~

【在 b*****l 的大作中提到】
: 有木有!!!!!!!!!!!!!!!!!
: 还是不能设 thread 数目。去掉相应行,work 了,但每次跑起来,threads 数目不等
: ,看系统的心情。跑了三次,分别是 15,17,16 个 threads.
: #include
: #include
: int main () {
: omp_set_dynamic(1);
: printf("omp_get_dynamic: %d.\n",omp_get_dynamic());
: printf("omp_get_max_threads: %d.\n", omp_get_max_threads());
: /* omp_set_num_threads(10); */

b*****l
发帖数: 9499
16
那啥,俺上 debian sid 了。。。前些天因为 DISPLAY 的问题吐血了好几天,才发现
貌似是 debian default interfaces 的问题。
对于 c++ 新手,啥都是可能发生的。。。

【在 g*******1 的大作中提到】
: 怎么这么倒霉,我系统只装了普通的编译环境,也一试就成功了
x******n
发帖数: 9057
17
这么前卫?我用到ubuntu也就到头了。

【在 b*****l 的大作中提到】
: 那啥,俺上 debian sid 了。。。前些天因为 DISPLAY 的问题吐血了好几天,才发现
: 貌似是 debian default interfaces 的问题。
: 对于 c++ 新手,啥都是可能发生的。。。

b*****l
发帖数: 9499
18
没办法啊,做 research 就是这个样子。大部分的专门的软件还是得自己编译。基本上
别人的 source codes 一更新,我们就得更新。否则 reviewer 就会说,你们
benchmark 得不是业界最新的技术。

【在 x******n 的大作中提到】
: 这么前卫?我用到ubuntu也就到头了。
g*******1
发帖数: 8758
19
这么惨,我一般都老实的用stable,也就前一次用的是testing,unstable从来不敢用
。当前的squeeze安装也搞的够呛,镜像有时连的上有时连不上,装完后网络都没了,
找了好久才发现是跟ATT的猫八字不合,域名解析有问题,真暧昧。不像以前有兴趣自
己编译了,除了dropbox傻瓜型编译,其它我都用现成的,没有拉倒。

【在 b*****l 的大作中提到】
: 没办法啊,做 research 就是这个样子。大部分的专门的软件还是得自己编译。基本上
: 别人的 source codes 一更新,我们就得更新。否则 reviewer 就会说,你们
: benchmark 得不是业界最新的技术。

x******n
发帖数: 9057
20
你们的行业太正规了,我们谁也没有source code,大家瞎吹就好了

【在 b*****l 的大作中提到】
: 没办法啊,做 research 就是这个样子。大部分的专门的软件还是得自己编译。基本上
: 别人的 source codes 一更新,我们就得更新。否则 reviewer 就会说,你们
: benchmark 得不是业界最新的技术。

相关主题
ask a question about compile shared library using libtool (转载)makefile 里面那个-D flags的问题
OpenMP 求救。。。 (转载)ask a question about compile shared library using libtool
Intel HD2000显卡Linux驱动问题?gcc compile option
进入Thoughts版参与讨论
x******n
发帖数: 9057
21
linux还是用虚拟机好,啥硬件问题都没有

【在 g*******1 的大作中提到】
: 这么惨,我一般都老实的用stable,也就前一次用的是testing,unstable从来不敢用
: 。当前的squeeze安装也搞的够呛,镜像有时连的上有时连不上,装完后网络都没了,
: 找了好久才发现是跟ATT的猫八字不合,域名解析有问题,真暧昧。不像以前有兴趣自
: 己编译了,除了dropbox傻瓜型编译,其它我都用现成的,没有拉倒。

g*******1
发帖数: 8758
22
硬件问题才是linux的精髓阿。。。:D
成linux轮就没办法回头了

【在 x******n 的大作中提到】
: linux还是用虚拟机好,啥硬件问题都没有
b*****l
发帖数: 9499
23
我不做算法,但组里有一个项目是做算法的,需要 beat peers 才成。每次投文章,
reviewers 都给一大堆的别人的算法要我们 compare。
对于不 release source codes 的软件,我们一律忽视,很开心地直接回复说没有源程
序,不知道对方编译环境,所以无法比较。所以么,学术界不公开 source codes 就是
自掘坟墓啊。

【在 x******n 的大作中提到】
: 你们的行业太正规了,我们谁也没有source code,大家瞎吹就好了
x******n
发帖数: 9057
24
哦,你们做算法的。
我们release程序也没用,因为结果还依赖数据。
数据有privacy的问题,有规定的,不能随便公开。

【在 b*****l 的大作中提到】
: 我不做算法,但组里有一个项目是做算法的,需要 beat peers 才成。每次投文章,
: reviewers 都给一大堆的别人的算法要我们 compare。
: 对于不 release source codes 的软件,我们一律忽视,很开心地直接回复说没有源程
: 序,不知道对方编译环境,所以无法比较。所以么,学术界不公开 source codes 就是
: 自掘坟墓啊。

b*****l
发帖数: 9499
25
我们组在做,我不做。我要么用最可靠的算法,要么自己写很烂的算法。只要能 proof
of concept 就够了。

【在 x******n 的大作中提到】
: 哦,你们做算法的。
: 我们release程序也没用,因为结果还依赖数据。
: 数据有privacy的问题,有规定的,不能随便公开。

1 (共1页)
进入Thoughts版参与讨论
相关主题
ask a question about compile shared library using libtool[转载] My makefile can not work, why?
gcc compile optionMakefile link lib question
c++ thread 求助Questions about MAKEFILE
Re: [转载] makefile question. urgent!!!!!!!!!!!!!!!!!!!!!!!!请教一个makefile 小问题
对复古的思考Re: Makefile help!( -g option)
linux 或者 perl 高手们啊c++ thread 求助 (转载)
Re: 又尼玛延迟了dropbox工作的机器不能安装,大家是如何解决的?
求教关于makefile可选target的问题ask a question about compile shared library using libtool (转载)
相关话题的讨论汇总
话题: thread话题: world话题: hello话题: threads话题: omp