ICode9

精准搜索请尝试: 精确搜索
  • c – OpenMP并行部分中的指针是否为私有?2019-10-07 21:08:59

    我已经将OpenMP添加到现有代码库中,以便并行化for循环.在并行区域范围内创建了几个变量,包括一个指针: #pragma omp parallel for for (int i = 0; i < n; i++){ [....] Model *lm; lm->myfunc(); lm->anotherfunc(); [....] } 在结果输出文件中,我注意到不一

  • c – 将OpenMP与pthreads混合使用2019-10-06 20:51:24

    我的问题是将OpenMP与pthreads混合是否是一个好主意.是否有那些将这两者结合起来的应用程序.混合这两个是一个好习惯吗?或典型的应用程序通常只使用两者之一.解决方法:通常情况下,最好只使用其中一种.但至少对我自己来说,我经常混合两者,如果正确完成它是安全的. 我这样做最常见的情

  • c – 写入std :: cout或std :: cerr的多个线程2019-10-05 08:14:27

    我有通过cout和cerr写入控制台的OpenMP线程.这当然不安全,因为输出可以交错.我可以做点什么 #pragma omp critical(cerr) { cerr << "my variable: " << variable << endl; } 如果可以用线程安全版本替换cerr会更好,类似于valgrind DRD手册(http://valgrind.org/docs/manual/d

  • c – C OpenMP并行quickSort2019-10-05 07:17:17

    在C中使用openMP时,我再次陷入困境.这次我正在尝试实现并行快速排序. 码: #include <iostream> #include <vector> #include <stack> #include <utility> #include <omp.h> #include <stdio.h> #define SWITCH_LIMIT 1000 using namespace std; template <type

  • c – 在OpenMP上下文中对firstprivate和threadprivate感到困惑2019-09-30 00:06:38

    假设我在对象中打包了一些资源,然后根据资源执行一些计算.我通常做的是初始化并行区域之外的对象,然后使用firstprivte关键字 int main() { // initialize Widget objs Widget Widobj{params1,params2,params3...}; #pragma omp parallel for firstpriv

  • OpenMP和C:私有变量2019-09-30 00:06:17

    我是OpenMP和c的新手,也许是因为我有一些非常基本的问题. 我试图做一个静态调度,所有变量都是私有的(以防万一,以验证获得的结果与非并行变量相同). 当我看到诸如身体之类的变量时,问题就出现了,我不知道它们来自哪里,因为它们之前没有定义过. 是否可以将所有出现的变量(如实体)定

  • c – 如何在OpenMP中将对象或结构定义为threadprivate?2019-09-28 22:16:15

    我不知道如何将struct或object作为threadprivate,我正在做的事情会产生错误: struct point2d{ int x; int y; point2d(){ x = 0; y = 0; } //copy constructor point2d(point2d& p){ x =

  • c – OpenMP:嵌套并行化有什么好处?2019-09-28 10:06:13

    根据我的理解,#pragma omp parallel及其变体基本上在许多并发线程中执行以下块,这对应于CPU的数量.当嵌套并行化时 – 并行为并行,并行函数内的并行函数等 – 内部并行化会发生什么? 我是OpenMP的新手,我想到的情况可能相当简单 – 将矢量与矩阵相乘.这是在两个嵌套的for循环中完成

  • c – openMP嵌套并行for循环vs内部并行for2019-09-26 21:08:30

    如果我像这样使用嵌套并行for循环: #pragma omp parallel for schedule(dynamic,1) for (int x = 0; x < x_max; ++x) { #pragma omp parallel for schedule(dynamic,1) for (int y = 0; y < y_max; ++y) { //parallelize this code here } //IMPORTANT: no code i

  • C:Linux中的时序(使用clock())不同步(由于OpenMP?)2019-09-26 16:10:10

    在程序的顶部和末尾,我使用clock()来计算程序完成所需的时间.不幸的是,它的报告时间似乎只有一半.我用“time”命令仔细检查了这一点. 我的节目报告: 在45.86s完成 时间命令报告:真实0m22.837s用户0m45.735ssys 0m0.152s 使用我的手机计时,它在23秒完成(又名:“真正的”时间). “用户

  • c – 对OpenMP中静态调度开销的影响2019-09-26 12:06:02

    我想到哪些因素会影响OpenMP中的静态调度开销. 在我看来,它受到以下因素的影响: > CPU性能> OpenMP运行时库的具体实现>线程数 但是我错过了其他因素吗?也许任务的大小,……? 此外:开销是否线性地依赖于迭代次数?在这种情况下,我希望有静态调度和4个内核,开销随着4 * i次迭代线性增加.到

  • c – 在El Capitan的Xcode中的clang-omp2019-09-26 06:04:25

    我喜欢在使用Xcode作为IDE的c项目中使用openmp.不幸的是,Apple的Clang编译器不支持openmp(see here),所以我安装了clang-omp.我完全按照该网站上给出的说明在Xcode中使用它,但是我得到的错误信息不能执行’/usr/local/bin / clang -omp'(没有这样的文件或目录).我尝试编译通过终端

  • c – 如何在OpenMP中使用锁?2019-09-17 21:05:36

    我有两个C代码在2个不同的核心上运行.它们都写入同一个文件. 如何使用OpenMP并确保没有崩溃?解决方法:您需要OMP_SET_LOCK / OMP_UNSET_LOCK函数:https://computing.llnl.gov/tutorials/openMP/#OMP_SET_LOCK.基本上: omp_lock_t writelock; omp_init_lock(&writelock); #pragma om

  • c – 我使用哪个openMP pragma进行阻塞循环?2019-09-03 03:06:44

    我的算法(求解泊松方程)是完全可并行化的 – 假设所有线程在每次迭代结束时同步. Function f, fNext; init(f); #pragma omp parallel for(int step=0; step<maxITER; step++) { #pragma omp for for(int i=0; i<N; i++) { for(int j=0; j<N; j++) { fNext(i,j)

  • C OpenMP指令2019-09-03 00:07:28

    我有一个循环,我正在尝试并行化,并在其中我填充容器,说一个STL地图.然后考虑下面的简单伪代码,其中T1和T2是一些任意类型,而f和g是整数参数的一些函数,分别返回T1,T2类型: #pragma omp parallel for schedule(static) private(i) shared(c) for(i = 0; i < N; ++i) { c.insert(s

  • 在C中使用openMP强制关闭线程?2019-09-02 19:06:24

    我想在运行一段时间后在openMP中关闭一个线程.我怎样才能做到这一点?解决方法:无法从外部强行杀死OpenMP线程.它们没有可用于执行连接,中断,中止等操作的句柄. 事实上,OpenMP甚至没有为此设计.如果你需要做一些特别的事情,最好让运行时处理线程并使用显式线程.

  • linux – FORTRAN内存利用率 – 静态与动态2019-09-02 16:53:48

    我有一个问题,我曾试图询问过,但没有走远,并找到了新的信息,我希望得到更多的帮助.代码是一个混合的MPI / OPENMP代码,当尝试跨多个节点运行时会崩溃并出现分段错误(尽管如果它只在一个节点上执行,它就是主进程产生的那个节点).问题中有静态数组,我发现如果静态数组“太大”会导致s

  • C OpenMP代码中的内存泄漏2019-09-01 20:16:56

    我写了一个c openmp代码,它在并行区域中有一个动态分配的内存私有变量,该区域在while循环中.在每个循环中,在并行区域的末尾释放动态分配的内存.我在每次分配和释放后通过linux机器上的/ proc / self / stat文件监视内存.我发现驻留集大小的内存较少.为什么会这样?代码是这样的 –

  • c – pragma omp用于内部pragma omp master或single2019-09-01 09:14:35

    我正坐在这里试图让孤儿工作,并通过减少#pragma omp parallel的调用来减少开销. 我正在尝试的是: #pragma omp parallel default(none) shared(mat,mat2,f,max_iter,tol,N,conv) private(diff,k) { #pragma omp master // I'm not against using #pragma omp single or whatever wi

  • c – OpenMP:同时写入std :: map2019-08-31 09:06:16

    我有一个std :: map,其键与thread_num相同.每个线程都写入值,这里是std :: vector.因此可以保证每个线程只在“他的”std :: vector上运行. 例: #include <iostream> #include <omp.h> #include <map> #include <vector> int main(void) { std::map<unsigned int, std::vect

  • OpenMP,Python,C扩展,内存访问和邪恶的GIL2019-08-31 03:56:54

    所以我目前正在尝试做一些像A ** b这样的东西用于一些2d ndarray和一个双b并行用于Python.我想使用OpenMP进行C扩展(是的,我知道,有Cython等等但是在某些时候我总是遇到那些’高级’方法的麻烦……). 所以这里是我的gaussian.so的gaussian.c代码: void scale(const double *A, doub

  • c – 有条件的“#pragma omp critical {”2019-08-30 20:07:11

    所以我想做这样的事情 #ifdef MYCOND #define CR_BEGIN #pragma omp critical{ #define CR_END } #else #define CR_BEGIN #define CR_END #endif 由于标签,GCC(4.8.2)不喜欢第2行. SO处的相关问题给出了答案“使用_Pragma(”“)”,但在这种情况下它不起作用. 建议?解决方法:你

  • c – 使用openmp并替换push_back并行化for循环2019-08-30 18:08:58

    我想并行化下面的代码,但我是openmp和创建并行代码的新手. std::vector<DMatch> good_matches; for (int i = 0; i < descriptors_A.rows; i++) { if (matches_RM[i].distance < 3 * min_dist) { good_matches.push_back(matches_RM[i]); } } 我试过了 std::vector<

  • c – 简单的OpenMP并行循环比串行计算慢2019-08-29 18:07:20

    我是并行化的新手,我希望我不浪费任何人的时间.我已经问了一些已经使用过openMP的朋友,但他们无法帮助我.所以我猜我的情况对其他人来说也很有意思,至少在教育方面是这样,我试着把它记录得尽可能好.这是两个例子,其中一个100%来自Tim Mattson在youtube上的教程,另一个以某种方式简化

  • 使用OpenMP并行化C代码,计算实际上并行较慢2019-08-29 06:18:39

    我有以下要并行化的代码: int ncip( int dim, double R) { int i; int r = (int)floor(R); if (dim == 1) { return 1 + 2*r; } int n = ncip(dim-1, R); // last coord 0 #pragma omp parallel for for(i=1; i<=r; ++i) {

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有