小编Jos*_*rpe的帖子

'#pragma omp master'与'#pragma omp single'相比有什么好处?

在OpenMP中,#pragma omp master指令内的任何代码都由单个线程(主控)执行,而在区域末尾没有隐含的屏障.(请参阅LLNL OpenMP教程中有关MASTER指令的部分).

这似乎相当于#pragma omp single nowait(除了'master'之外,任何线程都可以执行单个区域).

在什么情况下,如果有的话,使用#pragma omp master是否有益?

openmp

12
推荐指数
2
解决办法
1万
查看次数

Gnuplot:关键元素的位置

set key left top
Run Code Online (Sandbox Code Playgroud)

我可以设置图例的位置.但是,我想以这样的方式分别设置每个标题,在下面的例子中,图例在一行上:左边第一个,右边第二个.

plot sin(x) title "Sinus", x title "X"
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

gnuplot

5
推荐指数
1
解决办法
4484
查看次数

远程变量声明

远程变量声明如何工作?我已尝试用Chapel语言规范的第26.2.1节中描述的on子句扩充普通变量声明,但它似乎不起作用.例如,这行代码:

on Locales[1] var x: [0..10] real;
Run Code Online (Sandbox Code Playgroud)

无法编译,错误syntax error: near 'var'.

chapel

4
推荐指数
1
解决办法
69
查看次数

为什么我的代码在编译用于分析(-pg)时使用多个线程比使用单个线程运行得慢?

我正在写一个光线追踪器.

最近,我添加了线程到程序,以利用我的i5四核上的额外内核.

在一个奇怪的事件发生时,应用程序的调试版本现在运行得更慢,但优化的构建运行速度比我添加线程之前更快.

我将"-g -pg"标志传递给gcc用于调试构建,并将"-O3"标志传递给优化构建.

主机系统:Ubuntu Linux 10.4 AMD64.

我知道调试符号会给程序带来很大的开销,但始终保持相对性能.即,更快的算法将始终在调试和优化构建中运行得更快.

知道为什么我看到这种行为吗?

调试版本使用"-g3 -pg"编译.带"-O3"的优化版本.

Optimized no threading:        0m4.864s
Optimized threading:           0m2.075s

Debug no threading:            0m30.351s
Debug threading:               0m39.860s
Debug threading after "strip": 0m39.767s

Debug no threading (no-pg):    0m10.428s
Debug threading (no-pg):       0m4.045s
Run Code Online (Sandbox Code Playgroud)

这使我确信"-g3"不应该归咎于奇怪的性能增量,但它更像是"-pg"开关."-pg"选项可能会添加某种锁定机制来测量线程性能.

因为无论如何"-pg"在线程应用程序上被破坏了,我只是删除它.

linux performance multithreading gcc gprof

2
推荐指数
1
解决办法
3483
查看次数

标签 统计

chapel ×1

gcc ×1

gnuplot ×1

gprof ×1

linux ×1

multithreading ×1

openmp ×1

performance ×1