openmp相关内容

从两个数组的点积测量内存带宽

两个数组的点积 for(int i=0; i 不重用数据,因此它应该是内存绑定操作.因此,我应该可以通过点积来衡量内存带宽. 使用代码在why-vectorizing-the-loop-does-not-have-performance-improvement 我的系统获得了 9.3 GB/s 的带宽.但是,当我尝试使用点积计算带宽时,我获得了单线程速率的两倍多,多线程速率的三倍多(我的 ..
发布时间:2021-12-21 09:56:26 C/C++开发

使用 OpenMP 进行 Cholesky 分解

我有一个项目,我们使用 Cholesky 分解求解大型(超过 3000x3000)正定密集矩阵的逆矩阵.该项目使用 Java,我们使用的是 CERN Colt BLAS 库.分析代码表明 Cholesky 分解是瓶颈. 我决定尝试使用 OpenMP 并行化 Cholesky 分解,并将其用作 Java 中的 DLL(使用 JNA).我从 Rosetta Code 中的 C 中 Cholesk ..
发布时间:2021-12-18 23:32:21 其他开发

在 Mac OS X 10.11 上安装 OpenMP

如何让 OpenMP 在 Mac OSX 10.11 上运行,以便我可以通过终端执行脚本? 我已经安装了 OpenMP:brew install clang-omp. 当我运行时,例如:gcc -fopenmp -o Parallel.b Parallel.c 以下表达式返回:fatal error: 'omp.h' file not found 我也试过:brew instal ..
发布时间:2021-12-18 23:20:50 其他开发

如何在 OS X 中包含 omp.h?

我是 C 新手,在 OS X 中编译代码时遇到一些问题. 我在 Eclipse 中编写了很多 Java 代码,并使用终端来编译我的代码.但是现在我正在学习 openMP 并且遇到了麻烦. 首先我下载了​​ Xcode 来编写 openMP 代码,但它无法识别 .然后我安装了 g++.当我在终端中输入 g++ -v 时,我得到了这个: 配置为:--prefix=/Appl ..
发布时间:2021-12-18 23:09:26 C/C++开发

启用 openmp 时出错 - “ld: library not found for -lgomp"和 Clang 错误

我正在尝试让 openmp 在我的 Mavericks 程序中运行,但是当我尝试使用标志 -fopenmp 进行编译时,我收到以下错误: ld:未找到 -lgomp 的库clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用) 我正在运行的命令是: gcc myProgram.cpp -fopenmp -o myProgram 此外,当我运行 gcc 时,我会收到 Clan ..
发布时间:2021-12-18 22:57:54 C/C++开发

为什么ubuntu 12.04下的OpenMP比串口版慢

我已经阅读了有关此主题的其他一些问题.然而,他们无论如何都没有解决我的问题. 我写的代码如下,我得到的 pthread 版本和 omp 版本都比串行版本慢.我很困惑. 环境下编译: Ubuntu 12.04 64bit 3.2.0-60-genericg++ (Ubuntu 4.8.1-2ubuntu1~12.04) 4.8.1CPU:2在线 CPU(s) 列表:0,1每核线程:1供 ..
发布时间:2021-12-12 12:31:54 C/C++开发

如何处理 OpenMP 中的数据竞争?

我正在尝试使用 OpenMP 在数组中添加数字.以下是我的代码: int* input = (int*) malloc (sizeof(int)*snum);整数总和 = 0;国际我;for(i=0;i 这不会为 sum 产生正确的结果.怎么了? 解决方案 您的代码当前存在竞争条件,这就是结果不正确的原因.为了说明为什么会这样,让我们​​举一个简单的例子: 您在 2 个线程上运 ..
发布时间:2021-12-11 12:40:07 其他开发

在 OpenMP 并行代码中,并行运行 memset 有什么好处吗?

我的内存块可能非常大(大于 L2 缓存),有时我必须将它们设置为零.memset 在串行代码中很好,但是并行代码呢?如果从并发线程调用 memset 实际上会加快大型数组的速度,有人有经验吗?或者甚至使用简单的 openmp 并行循环? 解决方案 HPC 中的人们通常说一个线程通常不足以使单个内存链接饱和,对于网络链接也是如此.这里是我为您编写的一个快速而肮脏的启用 OpenMP 的 me ..
发布时间:2021-12-08 11:42:34 其他开发

“静态"和“静态"有什么区别?和“动态"在 OpenMP 中安排?

我开始使用 C++ 使用 OpenMP. 我有两个问题: 什么是#pragma omp for schedule? dynamic 和 static 有什么区别? 请举例说明. 解决方案 其他人已经回答了大部分问题,但我想指出一些特定的情况,其中特定的调度类型比其他的更适合.调度控制如何在线程之间划分循环迭代.选择正确的时间表会对应用程序的速度产生很大影响. st ..
发布时间:2021-12-06 11:58:23 C/C++开发

减少 OpenMP 中的数组

我正在尝试并行化以下程序,但不知道如何减少数组.我知道这是不可能的,但有没有其他选择?谢谢.(我在 m 上添加了reduce,这是错误的,但想就如何做到这一点提出建议.) #include #include #include #include 使用命名空间标准;int主(){int A [] = {84, 30, 95, 94, 36, 73, 52, 23, 2, 13};整数 S [10]; ..
发布时间:2021-12-06 11:26:15 C/C++开发

混合 C++11 原子和 OpenMP

OpenMP 有自己对原子访问的支持,但是,首选 C++11 原子至少有两个原因:它们明显更加灵活并且它们是标准的一部分.另一方面,OpenMP 比 C++11 线程库更强大. 该标准在两个不同的章节中指定了原子操作库和线程支持库.这让我相信原子访问的组件与使用的线程库是正交的.我真的可以将 C++11 原子和 OpenMP 结合起来吗? Stack Overflow 上有一个非常类似 ..
发布时间:2021-11-30 14:46:24 C/C++开发

在 macOS arm64 架构上使用 x86 库和 OpenMP

我有一台 MacBook M1,并在我的机器上安装了一个为 x86/Intel 架构编译的库.我有一些使用 OpenMP 的源代码.我想使用 clang 编译器编译我的代码并将我的可执行文件链接到 x86 库. 我可以按照说明编译没有 x86 依赖项的源代码 此处,使用随 brew 分发的 clang 实现. 但是,当我尝试使用 -arch x86_64 参数进行编译并链接到 x86 ..
发布时间:2021-11-28 22:00:41 C/C++开发

如何在`GCC`中获取`c`程序的抽象语法树

如何在gcc中获取c程序的抽象语法树? 我正在尝试将 OpenMP pragma 自动插入到输入 c 程序中. 我需要分析嵌套的 for 循环以查找依赖项,以便我可以插入适当的 OpenMP 编译指示. 所以基本上我想做的就是遍历分析输入c程序的抽象语法树. 我如何实现这一目标? 解决方案 您需要完整的数据流才能找到“依赖项".然后您将需要实际插入 OpenMP 调用. 您想 ..
发布时间:2021-11-26 18:01:46 其他开发

使用 OpenMP 的程序崩溃,仅限 x64

当我在 Release x64 中构建它时,下面的程序崩溃(所有其他配置都运行良好). 是我做错了还是 OpenMP 问题?高度赞赏有充分根据的解决方法. 使用以下代码重现构建项目(控制台应用程序).使用 Release x64 配置中的/openmp 和/GL 以及(/O1 或/O2 或/Ox)选项构建.那就是 OpenMP 支持和 C++ 优化必须打开.结果程序应该(不应该)崩溃. ..
发布时间:2021-11-25 07:20:17 C#

是否可以使用 openmp 减少数组?

OpenMP 本身是否支持减少表示数组的变量? 这会像下面这样工作...... float* a = (float*) calloc(4*sizeof(float));omp_set_num_threads(13);#pragma omp 并行缩减(+:a)for(i=0;i 理想情况下,omp 并行会有类似的东西,如果您有足够多的线程使其有意义,那么累积将通过二叉树发生. 解决方 ..
发布时间:2021-11-18 05:07:07 C/C++开发