常见问题常见问题   搜索搜索   会员列表会员列表   团队团队   注册注册    个人资料个人资料   登录查看您的站内信件登录查看您的站内信件   登录登录 

openmp

 
发表新文章   回复文章    FreeBSD China -> 休闲话题
阅读上一个主题 :: 阅读下一个主题  
作者 留言
c++-bmake
半仙


注册时间: 2015-09-06
文章: 124

文章发表于: Tue 2015-09-08 20:11:54    发表主题: openmp 引用并回复

有 openmp 编程经验的没

llvm 的 openmp 支持不知道怎么样,我试了下,并行效果不理想,不知道是我的电脑配置太差还是 llvm libomp 还不完善

devel/llvm-devel 选择 OPENMP
返回页首
阅览会员资料 发送站内信件
syh
老妖


注册时间: 2010-05-02
文章: 1617
来自: 卡拉赞

文章发表于: Wed 2015-09-09 21:44:56    发表主题: 引用并回复

不贴代码怎么让别人分析?

我也没有太多经验,只有一些粗浅的认识:
并行的粒度要大,最好从整体架构上考虑并行,而不是局部的某个计算去并行,
后者往往一个线程没跑多久就切,太浪费CPU。

_________________
又要毕业了。应该是最后一次。
-------------
audio/mous
ports-mgmt/pkg-rmleaf
Buffer Hint: http://www.vim.org/scripts/script.php?script_id=5272
返回页首
阅览会员资料 发送站内信件
c++-bmake
半仙


注册时间: 2015-09-06
文章: 124

文章发表于: Thu 2015-09-10 01:02:58    发表主题: 引用并回复

根本没法多线程,只有一个线程,是 llvm 还没有实现 openmp 吧? 只是实现了一个概念

openmp 的使用方法是,在 for 循环的前面加上
#pragma omp parallel for
然后连接 libomp.so 就可以了

可以用 pkg info -l llvm-devel | grep libomp.so 来搜索 libomp.so 的位置
返回页首
阅览会员资料 发送站内信件
syh
老妖


注册时间: 2010-05-02
文章: 1617
来自: 卡拉赞

文章发表于: Fri 2015-09-11 11:08:14    发表主题: 引用并回复

c++-bmake 写到:
llvm 的 openmp 支持不知道怎么样,我试了下,并行效果不理想,不知道是我的电脑配置太差还是 llvm libomp 还不完善

c++-bmake 写到:
根本没法多线程,只有一个线程,是 llvm 还没有实现 openmp 吧? 只是实现了一个概念

openmp 的使用方法是,在 for 循环的前面加上
#pragma omp parallel for
然后连接 libomp.so 就可以了

可以用 pkg info -l llvm-devel | grep libomp.so 来搜索 libomp.so 的位置


可见题主连toy都没弄成功啊……
咱虽然没啥OpenMP/MPI方面的实战经验,但hello world还是会玩的:

代码:
cat test.c

代码:
#include <stdio>
#include <stdlib>
#include <omp>

int main (int argc, char *argv[]) {
    int nthreads, tid;

    /* Fork a team of threads giving them their own copies of variables */
#pragma omp parallel private(nthreads, tid)
    {

        /* Obtain thread number */
        tid = omp_get_thread_num();
        printf("Hello World from thread = %d\n", tid);

        /* Only master thread does this */
        if (tid == 0) {
            nthreads = omp_get_num_threads();
            printf("Number of threads = %d\n", nthreads);
        }

    }  /* All threads join master thread and disband */

}


代码:
/usr/local/bin/clang-devel test.c -L/usr/local/llvm-devel/lib -lomp -fopenmp


代码:
OMP_NUM_THREADS=8 ./a.out

代码:
Hello World from thread = 0
Number of threads = 8
Hello World from thread = 3
Hello World from thread = 2
Hello World from thread = 1
Hello World from thread = 4
Hello World from thread = 7
Hello World from thread = 5
Hello World from thread = 6

_________________
又要毕业了。应该是最后一次。
-------------
audio/mous
ports-mgmt/pkg-rmleaf
Buffer Hint: http://www.vim.org/scripts/script.php?script_id=5272
返回页首
阅览会员资料 发送站内信件
c++-bmake
半仙


注册时间: 2015-09-06
文章: 124

文章发表于: Fri 2015-09-11 17:26:44    发表主题: 引用并回复

谢谢,搞定了,原来是没有加上 -fopenmp, 我也不懂 openmp
返回页首
阅览会员资料 发送站内信件
Gehaowu
老妖


注册时间: 2009-07-13
文章: 3193
来自: www

文章发表于: Fri 2015-09-11 22:39:14    发表主题: 引用并回复

syh 写到:

代码:
OMP_NUM_THREADS=8 ./a.out

代码:
Hello World from thread = 0
Number of threads = 8
Hello World from thread = 3
Hello World from thread = 2
Hello World from thread = 1
Hello World from thread = 4
Hello World from thread = 7
Hello World from thread = 5
Hello World from thread = 6


8线 Hello World。。。。。。。。。。 Shocked Shocked Shocked

_________________
BITMOE.com
礼尚多有往来,意美人常在
Simplified Chinese Shell/csh,Traditional Chinese Shell/tcsh
返回页首
阅览会员资料 发送站内信件 发送电子邮件 浏览发表者的主页
从以前的文章开始显示:   
发表新文章   回复文章    FreeBSD China -> 休闲话题 论坛时间为 北京时间
1页/共1

 
转跳到:  
不能发布新主题
不能在这个论坛回复主题
不能在这个论坛编辑自己的文章
不能在这个论坛删除自己的文章
不能在这个论坛发表投票


Powered by phpBB 2023cc © 2003 Opensource Steps; © 2003-2009 The FreeBSD Simplified Chinese Project
Powered by phpBB © 2001, 2005 phpBB Group
Protected by Project Honey Pot and phpBB.cc
silvery-trainer
The FreeBSD China Project 网站: 中文计划网站 社区网站
The FreeBSD China Project 版权所有 (C) 1999 - 2003 网页设计版权 著作权和商标