openmp相关内容

使用Fortran减少Openmp数组

我正在尝试并行化我编写的代码.我在数组上执行归约运算时遇到问题.对于较小的数组,这一切似乎都可以正常工作,但是当数组大小超过某个点时,我会得到堆栈溢出错误或崩溃. 我尝试在编译时使用/F增加堆栈大小,在Windows上使用ifort,还尝试将set KMP_STACKSIZE = xxx传递给Intel特定的堆栈大小清除.有时这会有所帮助,并允许代码在我的循环中继续前进,但即使堆栈大小为1G ..
发布时间:2020-05-21 01:32:33 其他开发

openmp中的printf性能问题

有人告诉我不要在openmp程序中使用printf,因为它会降低并行仿真程序的性能. 我想知道什么可以替代.我的意思是如何在不使用printf的情况下显示程序的输出. 我使用openmp遇到以下AES-128模拟问题,需要进一步说明 使用Openmp在C语言中对AES进行并行仿真 我想知道如何在不降低模拟性能的情况下输出密文? 谢谢. 解决方案 不能同时吃馅饼.确定 ..
发布时间:2020-05-21 01:32:26 其他开发

向量OpenMP C的矩阵乘法

我正在尝试通过C(OpenMP)中的矢量乘法编写Matrix 但是添加处理器时,我的程序变慢了. 1 proc - 1,3 s 2 proc - 2,6 s 4 proc - 5,47 s 我在PC(i5核心)和学校集群上进行了测试,结果相同(程序变慢) 这是我的代码(矩阵是10000 x 10000),向量是10000: double start_time = clock( ..
发布时间:2020-05-21 01:32:21 其他开发

Fortran OpenMP中的全局变量

为什么只有将循环变量"i"和"j"作为子程序"mat_init"的输入参数,Fortran中的以下代码才起作用?循环变量"i"和"j"被声明为私有变量,所以当我调用它时,它们是否不应该在子例程中保持私有状态? program main use omp_lib implicit none real(8), dimension(:,:), allocatable:: A ..
发布时间:2020-05-21 01:32:17 其他开发

OpenMP,并行减少for循环

我有一个for循环遍历大量的点(大约20000),对于每个点,检查该点是否在某个圆柱体内(每个点都相同). 此外,我想获得一组点中最高的Y坐标. 由于我必须执行大量计算,而且速度很慢,因此我想使用OpenMP来并行化循环.目前,我(有所减少): #pragma omp parallel for default(shared) private(reducedCloudSize, reduced ..
发布时间:2020-05-21 01:32:15 其他开发

为什么openMP不支持在C语言中减少数组?

在OpenMP 3.0中,特殊的结构支持Fortran缩减,而在C/C ++中,则将其委派给程序员.我想知道是否有特殊原因,因为OpenMP 3.0于2008年问世,所以我认为也有足够的时间为C/C ++实施它.是否有与C/C ++相关的任何技术原因,为什么C/C ++仍不支持该原因? 解决方案 正如评论中提到的,默认情况下,OpenMP不支持减少数组的原因是它不知道数组的大小.默认情况下 ..
发布时间:2020-05-21 01:32:12 其他开发

forrtl:严重(151):可分配数组已分配-

/var/spool/torque/mom_priv/jobs/775.head.cluster.SC: line 22: 28084 Segmentation fault ./a.out 我是Fortran的新手,这是我第一次使用HPC和OpenMP. 在我的代码中,我有一个应该并行的循环.我使用了一些动态变量,它们在并行循环中都是虚拟的. 我在并行循环中分配动态变量 ..
发布时间:2020-05-21 01:32:07 其他开发

Pybind11:使用for循环通过OpenMP访问python对象

我正在尝试在python字典的所有元素上运行c ++函数.为此,我在字典中的所有元素上使用c ++中的for循环.在这种情况下,据我所知,可以使用#pragma omp parallel for simd子句来加快速度.但是,当我运行它时,出现错误: GC对象已被跟踪 退出代码为139的过程结束(信号11:SIGSEGV中断) 修改 我在此帖子上已读到源于在c ++中访问Pyt ..
发布时间:2020-05-21 01:32:02 C/C++开发

OpenMp:创建具有线程数大小的数组的最佳方法

特定于我必须与OpenMp并行计算pi.我只允许使用#omp parallel.所以我想创建一个具有进程数大小的数组,然后部分地并行计算总和,然后一起计算总和.但是不幸的是,在并行版本之前无法获得线程数.那么最好的方法是创建一个非常大的数组并将其初始化为0.0,然后一起计算所有内容,还是有更好的方法呢?我会很感激每一个答案.预先谢谢你! 解决方案 幸运的是,并非不可能事先获得线程数.在没有 ..
发布时间:2020-05-21 01:31:54 C/C++开发

具有openmp并行功能的Qimage setPixel不起作用

代码在没有并行性的情况下可以工作,但是当我添加并行编译指示时,它不起作用.此外,如果我不添加setPixel,则该代码可与编译指示omp并行完美地工作.因此,我想知道为什么当我尝试在新图像中设置像素时,并行性无法正常工作,并退出代码255的程序.该代码希望通过执行两次循环来更改图像,以使用高斯向量更改每个像素.如果无法理解某些问题,我会立即解决. for (h = 0; h ..
发布时间:2020-05-21 01:31:40 C/C++开发

我们可以并行执行此任务吗?

给定一个C字符串(以NULL字符常量终止的字符数组),我们必须找到字符串的长度.您能否提出一些方法来并行处理N个执行线程.我在划分子问题时遇到问题,因为访问不存在的数组位置会导致分割错误. 编辑:我并不担心并行执行此任务是否会产生更大的开销.只想知道这是否可以完成(使用诸如openmp之类的方法) 解决方案 不行.因为每个步骤都需要知道先前的状态(我们在先前的char上遇到了null ..
发布时间:2020-05-21 01:31:38 其他开发