由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 我写的C++ ParallelForLoop,感兴趣的来下载测试
相关主题
A helloworld OpenMP question?C++ Software Engineer 工作求内推(Boston)
openMP or boost::thread (pthread) for multithreading ?用root跑程序更快
c++ thread 求助看到python的multiprocessing心中一痛
[合集] Intel 9编译器在vc 6.0的环境里编译openmp的问题Windows Thread API
求救pthread and C++
c++11 std::thread 和 openmp 那个额外开销少?有专门介绍multithreading编程的书吗
请大牛们帮忙看一段并行c++代码的效率问题多线程 编程,process 和 thread 的一些问题。
如何查看一个程序/进程使用了哪些cpu?how many ways in C++ to release a mutex?
相关话题的讨论汇总
话题: c++话题: openmp话题: thread话题: 下载
进入Programming版参与讨论
1 (共1页)
N******K
发帖数: 10202
1
下载文件
https://www.dropbox.com/s/e9wt1z0sta9zyjs/Multithreading.zip?dl=0
我用了c++11 vs2013
如果你用的是gcc什么的 请在CMakeLists.txt里面加上一句话 参考链接
http://stackoverflow.com/questions/16886591/how-do-i-enable-c11
另外抱怨什么C++ template,说没用的,基本都是智商堪忧,请自觉转java
N******K
发帖数: 10202
2
希望用过openmp的 和这个对比一下 看看性能有什么区别

【在 N******K 的大作中提到】
: 下载文件
: https://www.dropbox.com/s/e9wt1z0sta9zyjs/Multithreading.zip?dl=0
: 我用了c++11 vs2013
: 如果你用的是gcc什么的 请在CMakeLists.txt里面加上一句话 参考链接
: http://stackoverflow.com/questions/16886591/how-do-i-enable-c11
: 另外抱怨什么C++ template,说没用的,基本都是智商堪忧,请自觉转java

w***g
发帖数: 5958
3
稍微改动一下后可以在linux/gcc上跑通。

【在 N******K 的大作中提到】
: 下载文件
: https://www.dropbox.com/s/e9wt1z0sta9zyjs/Multithreading.zip?dl=0
: 我用了c++11 vs2013
: 如果你用的是gcc什么的 请在CMakeLists.txt里面加上一句话 参考链接
: http://stackoverflow.com/questions/16886591/how-do-i-enable-c11
: 另外抱怨什么C++ template,说没用的,基本都是智商堪忧,请自觉转java

N******K
发帖数: 10202
4
和 openmp 比较过么?

【在 w***g 的大作中提到】
: 稍微改动一下后可以在linux/gcc上跑通。
w***g
发帖数: 5958
5
没比较。你这个跟tbb比较像。实际运行应该没有明显差别。

【在 N******K 的大作中提到】
: 和 openmp 比较过么?
S*A
发帖数: 7142
6
openmp 我猜和 MPI 一样是用 message passing 的。
你的是用 share memory。这个应该会比 message 快。
我没有实验过所以都是猜的。
S*A
发帖数: 7142
7
看了一下,感觉把简单的事情搞复杂了。
要读懂程序流要费很多不必要的力气。
我就算用 C 实现一下也比这个要紧凑。

【在 N******K 的大作中提到】
: 下载文件
: https://www.dropbox.com/s/e9wt1z0sta9zyjs/Multithreading.zip?dl=0
: 我用了c++11 vs2013
: 如果你用的是gcc什么的 请在CMakeLists.txt里面加上一句话 参考链接
: http://stackoverflow.com/questions/16886591/how-do-i-enable-c11
: 另外抱怨什么C++ template,说没用的,基本都是智商堪忧,请自觉转java

N******K
发帖数: 10202
8
你写一个std::thread出来

【在 S*A 的大作中提到】
: 看了一下,感觉把简单的事情搞复杂了。
: 要读懂程序流要费很多不必要的力气。
: 我就算用 C 实现一下也比这个要紧凑。

S*A
发帖数: 7142
9
我写 std::thread 干吗。
直接调用 pthread 不就完了吗。
C++ 自己是不能不依赖 OS 来实现 thread 的。
所以最后还是要调用 pthread 之类的 OS layer。
我真心没看出你搞那么复杂的一大段代码就是展示
std::thread 强在那里。貌似把简单问题复杂话了。

【在 N******K 的大作中提到】
: 你写一个std::thread出来
w***g
发帖数: 5958
10
gcc的openmp是shared memory,机制跟natureOK的差不多,就是语法更好,各种控制更
多。
比如要把vector jobs里的每个东西用work函数算一个结果出来放入vector<
Result>里,并且要打印progress,用下面的代码就行
#include
boost::progress_display progress(jobs.size(), cerr);
result.resize(jobs.size());
#pragma omp parallel for
for (unsigned i = 0; i < jobs.size(); ++i) {
work(jobs[i], &results[i]);
#pragma omp critical
++progress;
}
openmp可以通过编译器命令行启动或者禁止。禁止的话就是传统的单线程程序。
用C(包括C with class)写才直接用pthread。就是C++11之前也早就有boost::thread
了。

【在 S*A 的大作中提到】
: openmp 我猜和 MPI 一样是用 message passing 的。
: 你的是用 share memory。这个应该会比 message 快。
: 我没有实验过所以都是猜的。

相关主题
c++11 std::thread 和 openmp 那个额外开销少?C++ Software Engineer 工作求内推(Boston)
请大牛们帮忙看一段并行c++代码的效率问题用root跑程序更快
如何查看一个程序/进程使用了哪些cpu?看到python的multiprocessing心中一痛
进入Programming版参与讨论
S*A
发帖数: 7142
11

这个至少看上去精悍很多,而且也比较容易突出是那里分出去的。

【在 w***g 的大作中提到】
: gcc的openmp是shared memory,机制跟natureOK的差不多,就是语法更好,各种控制更
: 多。
: 比如要把vector jobs里的每个东西用work函数算一个结果出来放入vector<
: Result>里,并且要打印progress,用下面的代码就行
: #include
: boost::progress_display progress(jobs.size(), cerr);
: result.resize(jobs.size());
: #pragma omp parallel for
: for (unsigned i = 0; i < jobs.size(); ++i) {
: work(jobs[i], &results[i]);

N******K
发帖数: 10202
12
这点代码其实一点不复杂
ParallelForLoop 和 ParallelBlock
你看似复杂的东西 是有具体应用的
我用后者于图像滤波并行化等等
前者用于一般的for循环

【在 S*A 的大作中提到】
: 我写 std::thread 干吗。
: 直接调用 pthread 不就完了吗。
: C++ 自己是不能不依赖 OS 来实现 thread 的。
: 所以最后还是要调用 pthread 之类的 OS layer。
: 我真心没看出你搞那么复杂的一大段代码就是展示
: std::thread 强在那里。貌似把简单问题复杂话了。

S*A
发帖数: 7142
13
不必要的复杂。你自己写的不是很觉得,你要从完全没有
读过你代码的人角度看。楼上那个openmp 的代码就精简
很多。
而且你名字类似,功能细微区别的函数太多。反正回到
基本点上,用 pthread 直接实现一个代码篇幅都要比你
得小。而且看的清楚 thread 都是那里来的哪里结束的。
或者你的这个例子不成功,另外有其他的妙用你没有展示
出来。我觉得看到的是不必要的中间层。

【在 N******K 的大作中提到】
: 这点代码其实一点不复杂
: ParallelForLoop 和 ParallelBlock
: 你看似复杂的东西 是有具体应用的
: 我用后者于图像滤波并行化等等
: 前者用于一般的for循环

N******K
发帖数: 10202
14
完整的应用 显然不能发出来啊 哈哈
std::thread windows linux 通用 这一点你否认不了

【在 S*A 的大作中提到】
: 不必要的复杂。你自己写的不是很觉得,你要从完全没有
: 读过你代码的人角度看。楼上那个openmp 的代码就精简
: 很多。
: 而且你名字类似,功能细微区别的函数太多。反正回到
: 基本点上,用 pthread 直接实现一个代码篇幅都要比你
: 得小。而且看的清楚 thread 都是那里来的哪里结束的。
: 或者你的这个例子不成功,另外有其他的妙用你没有展示
: 出来。我觉得看到的是不必要的中间层。

S*A
发帖数: 7142
15
如果你一开始就是在一个平台做,没有必要自己搞那么复杂。
楼上的就比你的代码简单而且容易读。
如何通用的处理 thread 之间的 signal?
这种通用的代价就是深入使用两个平台都不好用。

【在 N******K 的大作中提到】
: 完整的应用 显然不能发出来啊 哈哈
: std::thread windows linux 通用 这一点你否认不了

1 (共1页)
进入Programming版参与讨论
相关主题
how many ways in C++ to release a mutex?求救
C++11 native thread问题c++11 std::thread 和 openmp 那个额外开销少?
c++11 std thread类 怎么样,大家用过么请大牛们帮忙看一段并行c++代码的效率问题
Daemon thread如何查看一个程序/进程使用了哪些cpu?
A helloworld OpenMP question?C++ Software Engineer 工作求内推(Boston)
openMP or boost::thread (pthread) for multithreading ?用root跑程序更快
c++ thread 求助看到python的multiprocessing心中一痛
[合集] Intel 9编译器在vc 6.0的环境里编译openmp的问题Windows Thread API
相关话题的讨论汇总
话题: c++话题: openmp话题: thread话题: 下载