openmp相关内容

OpenMP 开销

我使用 OpenMP 和 Intel TBB 并行化了图像卷积和 lu 分解.我正在 1-8 个内核上测试它.但是,当我通过分别使用 set_num_threads(1) 和 task_scheduler_init InitTBB(1) 指定一个线程在 OPenMP 和 TBB 中的 1 个内核上尝试它时;由于 TBB 开销,与顺序代码相比,TBB 性能显示出一些小幅下降,但令人惊讶的是,Open ..
发布时间:2021-06-12 20:19:14 其他开发

帮助解决openmp编译问题

我试图在我的 C 代码中使用 omp 并且遇到了一个问题:在代码中我有#include但是当我尝试编译时: g++ -fopenmp -g -c parallel.c 我收到 cc1plus:错误:无法识别的命令行选项“fopenmp"当我尝试时: g++ -g -c parallel.c 我收到两个错误: omp.h:没有那个文件或目录,并且未在此范围内声明 mal ..
发布时间:2021-06-12 20:19:11 其他开发

OpenMp 与 IOS/Android 的兼容性

我想做什么: 我正在编写 C/c++ 代码以构建适用于所有平台的产品(IOS/Android/Windows(移动/桌面)/Mac/Linux) 到目前为止我做了什么: 是的,有很多在线链接都在讨论 OpenMp 与不同处理器和操作系统的兼容性,但很难从它们中得出合乎逻辑的结论,因为许多是较旧的文章或特别针对移动目标的帖子. 参考:链接 根据我的分析,是的,openM ..
发布时间:2021-06-12 20:19:09 移动开发

OpenMP 与 gcc 编译器优化

我正在使用通过正交计算 pi 值的示例学习 openmp.在串行中,我运行以下 C 代码: double serial() {双步;双 x,pi,sum = 0.0;step = 1.0/(double) num_steps;for (int i = 0; i 我将其与使用并行 for with reduction 的 omp 实现进行比较: double SPMD_for_reducti ..
发布时间:2021-06-12 20:19:02 其他开发

OpenMP 临界区与锁

OpenMP 锁和临界区有什么区别?它们只是彼此的替代品吗?例如,如果我使用多个文件写入同一个文件,我应该在写入文件之前使用锁定还是仅使用临界区? 解决方案 关键部分最常在内部使用锁,例如: libgomp:来源 libiomp: 如果省略了可选的(名称),它会锁定一个未命名的全局互斥锁. OpenMP 规范保证以下行为: > 关键构造限制相关联的执行一次一 ..
发布时间:2021-06-12 20:18:57 其他开发

openmp 中嵌套 for 循环的性能改进失败

我正在使用 Eratosthenes Sieve 算法来查找 n 之前的素数.想法是标记一个素数的所有倍数.但是,随着线程数量的增加,它并没有实现性能提升. 使用 100 个线程花费 0.009 秒,使用 1 个线程花费 0.006 秒来查找 100000 之前的素数. #pragma omp parallel num_threads(t){#pragma omp forfor (int ..
发布时间:2021-06-12 20:18:54 其他开发

块错误的openmp

为什么 openmp 给我这个错误:- error: for statement expected before ‘{’ token #include #include #include #include int main (int argc, char *argv[]){#pragma omp 并行{int a[100],b[100],c[100];int i = 0;for(; i ..
发布时间:2021-06-12 20:18:49 其他开发

OpenMP 在结束 C 程序之前不等待所有线程完成

我有以下问题:我的 C 程序必须计算文本文件中单词列表的出现次数. 我为此使用了 OpenMP,并且该程序在理论上具有正确的逻辑.当我将一些 printfs 放在 For Loop 中时,程序的结果是正确的并且始终相同. 当我删除 printfs 时,结果不正确,并且每次执行时其值都会发生变化.鉴于这种情况,我认为原因与执行时间有关.使用 printfs 会增加执行时间,因此有时间完成 ..
发布时间:2021-06-12 20:18:33 其他开发

使用 openmp 并行执行函数

我对几个独立函数进行了一系列调用. func1(arg);func2(arg);func3(arg); 我想并行执行它们,而不是串行执行它们.我目前正在使用 #pragma omp parallel{func1(arg);func2(arg);func3(arg)} 我尝试的其他方法是使用 switch case,然后并行执行它以将任务拆分到不同的线程,例如 function(arg, ..
发布时间:2021-06-12 20:18:26 其他开发

在 Mac 中使用不同版本的 g++ 运行 OpenMP

我最近使用 brew 在我的 macOS high Sierra 上安装了 OpenMP. 我可以使用 g++-9 轻松运行具有 OpenMP 指令的代码(类似于此处答案中的建议:在 Mac OS 上使用 OpenMP 和 C++11 ).但是,我需要将 OpenMP 功能添加到使用 OpenCV 的项目中,并且我只能使用常规 g++ 编译它(g++ —version 显示它是 4.2.1) ..
发布时间:2021-06-12 19:34:43 其他开发

在openMP c ++中并行化许多嵌套的for循环

嗨,我是 C++ 的新手,我编写了一个可以运行的代码,但是由于许多嵌套的 for 循环,它很慢,我想通过 openmp 来加速它,任何可以指导我的人.我尝试在 ip 循环之前使用 '#pragma omp parallel' 并且在这个循环中我在 #pragma omp parallel for' 之前使用了 >it 循环但它不起作用 #pragma omp 并行for(int ip=0; i ..
发布时间:2021-06-07 19:07:08 C/C++开发

避免在开放 MP 中创建线程开销

我正在使用 open MP 来并行化 HEVC 中的一部分代码.代码的基本结构如下 空函数(){ for(...) { #pragma OMP parallel for private(....) 对于 (...) { ////做一些并行工作 }//内部for循环结束 //其他任务 }///外部循环结束 }//函数结束 现在我 ..
发布时间:2021-06-04 20:47:45 其他开发

C OpenMP:libgomp:线程创建失败:资源暂时不可用

我正在尝试做一个基本项目,但似乎线程用完了?你们知道我该如何解决这个问题吗? 代码如下: int main(){omp_set_num_threads(2150);#pragma omp 并行{printf("%d\n",omp_get_thread_num());}返回0;} 这里是我在“其他编译器选项"上写的全局编译器设置在代码块上: -fopenmp 我收到以下错误: l ..
发布时间:2021-06-04 20:39:31 其他开发

openmp 排序临界区

我正在尝试创建一个 OpenMP 程序,该程序将按顺序遍历一个循环.我意识到线程不适用于顺序程序——与单线程相比,我试图获得一点加速,或者至少保持与单线程程序相似的执行时间. 在我的#pragma omp 并行部分中,每个线程计算自己的大型数组部分并获得该部分的总和.这些都可以并行运行.然后我希望线程按顺序运行,并将每个总和添加到 TotalSum IN ORDER.所以线程 1 必须等待线 ..
发布时间:2021-06-04 20:29:54 其他开发