草庐IT

intel-mpi

全部标签

c++ - 谐波级数和 c++ MPI 和 OpenMP

我正在尝试同时使用MPI和opemMP制作并行版本的“HarmonicProgressionSum”问题。但是输出在每个过程中都是不同的。谁能帮我解决这个问题?并行程序:(MPI和OpenMP)#include#include#include#include#include#include#include#defined10//NumbersofDigits(Example:5=>0,xxxxx)#definen1000//ValueofN(Example:5=>1/1+1/2+1/3+1/4+1/5)usingnamespacestd;doublet_ini,t_fim,t_tot;

c++ - MPI_Allgather 中的奇怪死锁

经过大量谷歌搜索,我不知道是什么导致了这个问题。在这里:我在我的代码中有一个对MPI_Allgather的简单调用,我对它进行了双重、三次和四次检查以确保正确(发送/接收缓冲区大小合适;调用中的发送/接收大小正确),但是对于“大量”进程导致死锁或MPI_ERR_TRUNCATE。用于Allgather的通信器使用MPI_Comm_split从MPI_COMM_WORLD中分离出来。对于我当前的测试,等级0分配给一个通信器,其余等级分配给第二个通信器。对于6个或更少的总等级,Allgather工作得很好。如果我使用7个等级,我会得到一个MPI_ERR_TRUNCATE。8个行列,僵局。我

c++ - std::function<> 和 Intel 编译器版本 11.1

我在使用英特尔编译器中的lambda函数时遇到问题,特别是以下代码无法编译:templatestd::functionmake_func(Tx){return[=](intindex)->T{returnx;};}我得到的错误是error:namespace"std"hasnomember"function"代码在我的Mac上编译和运行良好(macportsgcc版本4.5)。错误在起作用,我们使用的是Intel编译器版本11.1。它确实接受lambda函数(使用-std=c++0x选项),例如:autolam=[=](intj)->int{printf("testingforlamb

c++ - 如何规避 Intel C++ 编译器的 `decltype` 和继承问题?

我今天非常惊讶地发现Intel的icpc(版本14.0.2,使用std=c++0x)无法编译以下代码段。p>#includenamespacetraits_tests{templatestructsfinae_true:std::true_type{};templatestaticautovalue_type(int)->sfinae_true;templatestaticautovalue_type(void*)->std::false_type;}templatestructhas_value_type:decltype(traits_tests::value_type(0)){}

c++ - clock() 和 MPI_Wtime() 之间的区别

快速提问。对于我的代码的MPI实现,我在这两个方面都有很大的不同。我知道MPI_Wtime是每个处理器经过的实时时间,而clock()给出了预期时间的粗略概念。有人想添加一些断言吗? 最佳答案 clock函数完全没用。它测量cpu时间,而不是实时/墙上时间,而且它有以下严重问题:在大多数实现中,分辨率都非常差,例如1/100秒。CLOCKS_PER_SECOND不是分辨率,只是比例。使用CLOCKS_PER_SECOND的典型值(例如,Unix标准要求它为100万),clock将在32-分钟内溢出位系统。溢出后返回-1。大多数历史实

c++ - OpenMP、MPI、POSIX 线程、std::thread、boost::thread 如何关联?

有几种方法可以实现多线程。std::thread最终由C++11标准引入,但可以有效地使用boost::thread。每种技术都有特定的语法和内容,但大致用于CPU并行编程。但它们有不同的作用。我知道,例如,MPI和OpenMP用于不同的内存模型。我还知道,技术的选择实际上并不是唯一的,因此可以使用另一种技术(同样是MPI和OpenMP)。为什么它们用于不同的效果但仍然使用相同的源(CPU)?如果我基于这些技术中的每一种技术编译具有并行性的C++程序,会有什么区别(从操作系统和硬件的角度来看)?例如,OpenMP或std::thread使用POSIX线程吗?如果是这样,C++11的线程

c++ - 此功能是否适合 Intel 上的 SIMD?

我正在尝试优化以下函数(稍微简化了一点,但这是我的程序花费大量时间的循环):intf(intlen,unsignedchar*p){inti=0;while(i=32&&p[i]我认为它可以使用vector指令进行优化,但从一些研究来看,SSE似乎不适用于在字节级别工作。该程序仅针对OSX上的64位IntelCPU。是否有一个我没有看到的聪明的bit-twiddling技巧可以让我一次在64位上工作?带-O3的llvm没有做任何巧妙的优化。更新:在我的基准测试中,SIMD代码通常是最快的(取决于输入的大小),但由于某些原因,使用SIMD的应用程序总体上比使用简单代码或位旋转技巧的速度慢

c++ - 使用 mpi 将矩阵写入单个 txt 文件

我有一个巨大的矩阵,我将它分成一些子矩阵,然后对其进行一些计算。在这些计算之后,我必须将该矩阵写入单个文件以进行后期处理。是否可以将结果写入单个文本文件,我该怎么做?例如,我们有一个在y方向上划分的nxny矩阵(每个进程都有一个nxrank矩阵),我们想将nx*ny矩阵写入单个文本文件。 最佳答案 所以将大量数据写成文本并不是一个好主意。它真的非常非常慢,它会生成不必要的大文件,而且处理起来很痛苦。大量数据应该写成二进制,只有人类的摘要数据写成文本。让计算机要处理的东西对计算机来说很容易,只有你真正要坐下来阅读的东西对你来说很容易处

c++ - 创建一个跨 MPI 进程保持同步的计数器

我在使用基本的comm和groupMPI2方法方面有相当多的经验,并且使用MPI进行了相当多的令人尴尬的并行模拟工作。到目前为止,我已经将我的代码结构化为具有一个调度节点和一堆工作节点。调度节点有一个将与模拟器一起运行的参数文件列表。它使用参数文件为每个工作节点播种。工作节点运行它们的模拟,然后请求调度节点提供的另一个参数文件。一旦运行了所有参数文件,调度节点将关闭每个工作节点,然后再自行关闭。参数文件通常命名为“Par_N.txt”,其中N是标识整数(例如-N=1-1000)。所以我在想,如果我可以创建一个计数器,并且可以让这个计数器在我的所有节点之间同步,我就可以消除对调度节点的需

Intel Quick Sync Video(QSV)(快速视频同步)介绍

参考文章:英特尔®快速视频同步(QuickSyncVideo)技术-英特尔®官网文章目录IntelQuickSyncVideo(IntelQSV)介绍1.IntelQSV概述2.工作原理3.主要特性3.1高效的视频处理3.2广泛的格式支持3.3实时处理能力4.使用IntelQSV的应用案例4.1视频转码软件4.2游戏直播和录制软件5.疑难技术点解析:如何在FFmpeg中使用IntelQSV6.结论IntelQuickSyncVideo(IntelQSV)介绍1.IntelQSV概述IntelQuickSyncVideo(QSV)是由Intel开发的专门用于视频编码和解码的技术。这项技术从San