草庐IT

intel-mpi

全部标签

c++ - 为什么 GCC 为 0.0/0.0 产生 -nan 和 clang 和 intel 产生 +nan?

当我调试代码时,我发现GCC和Clang都为0.0/0.0产生nan,这是我所期望的,但GCC产生的nan将符号位设置为1,而Clang将其设置为0(如果我没记错的话,与ICC一致)。现在显然这两种形式都是允许的,但我一直想知道为什么0.0/0.0会使GCC输出“否定”结果(打印它会给出-nan),并且-(0.0/0.0)给出“肯定”结果?更令人困惑的是,-0.0/0.0又是“负数”了。这是一个不断折叠的怪癖吗?编辑实际上,正是不断的折叠使它成为一个积极的nan。如果我在运行时强制计算,我会在GCC和Clang上得到负nanvolatilefloatzero=0.0;std::cout

c++ - 编译器优化 : g++ slower than intel

我最近购买了一台双启动计算机,可以用C++编写代码。在Windows上,我在linux上使用英特尔C++编译器和g++。我的程序主要由计算组成(具有数值积分的定点迭代算法等)。我以为我可以在我的linux上获得接近windows的性能,但到目前为止我还没有:对于完全相同的代码,使用g++编译的程序比使用intel编译器的程序慢大约2倍。从我读到的内容来看,icc可以更快,甚至可能提高20-30%,但我没有读到任何关于它快两倍的内容(总的来说,我实际上读到两者应该是等效的)。起初我使用的标志大致等效:icl/openmp/I"C:\boost_1_61_0"/fastprogram.cp

c++ - 编译器优化 : g++ slower than intel

我最近购买了一台双启动计算机,可以用C++编写代码。在Windows上,我在linux上使用英特尔C++编译器和g++。我的程序主要由计算组成(具有数值积分的定点迭代算法等)。我以为我可以在我的linux上获得接近windows的性能,但到目前为止我还没有:对于完全相同的代码,使用g++编译的程序比使用intel编译器的程序慢大约2倍。从我读到的内容来看,icc可以更快,甚至可能提高20-30%,但我没有读到任何关于它快两倍的内容(总的来说,我实际上读到两者应该是等效的)。起初我使用的标志大致等效:icl/openmp/I"C:\boost_1_61_0"/fastprogram.cp

c++ - 我可以在现代 Intel Core CPU 上测量分支预测失败吗?

Thisquestion它的答案最近被标记为史诗般的答案,这让我想知道;我可以根据CPU分支预测失败来衡量Windows中正在运行的应用程序的性能吗?我知道存在一些静态分析工具,它们可能有助于优化代码以在分支预测情况下获得良好的性能,并且手动技术可以通过简单地进行更改和重新测试来提供帮助,但我正在寻找一些可以在Windows应用程序运行时报告一段时间内分支预测失败的总数,我希望VisualC++的一些Profiler工具可以帮助我。就这个问题而言,所讨论的应用程序要么是使用原生编译器(例如Windows的VisualC++)构建的,要么是使用其他一些原生编译器(例如GCC、FreePa

c++ - 我可以在现代 Intel Core CPU 上测量分支预测失败吗?

Thisquestion它的答案最近被标记为史诗般的答案,这让我想知道;我可以根据CPU分支预测失败来衡量Windows中正在运行的应用程序的性能吗?我知道存在一些静态分析工具,它们可能有助于优化代码以在分支预测情况下获得良好的性能,并且手动技术可以通过简单地进行更改和重新测试来提供帮助,但我正在寻找一些可以在Windows应用程序运行时报告一段时间内分支预测失败的总数,我希望VisualC++的一些Profiler工具可以帮助我。就这个问题而言,所讨论的应用程序要么是使用原生编译器(例如Windows的VisualC++)构建的,要么是使用其他一些原生编译器(例如GCC、FreePa

c++ - 使用使用 std::async 创建的线程发送 MPI 的线程安全

根据thiswebsite,MPI::COMM_WORLD.Send(...)的用法是线程安全的。但是,在我的应用程序中,我经常(并非总是)遇到死锁或出现段错误。附上MPI::COMM_WORLD的每个电话带有mutex.lock()的方法和mutex.unlock()始终如一地消除死锁和段错误。这就是我创建线程的方式:constautocommunicator=std::make_shared();std::vector>handles;for(size_ti=0;iCommunicator是一个具有std::mutex的类成员并独占调用诸如MPI::COMM_WORLD.Send(

c++ - 使用使用 std::async 创建的线程发送 MPI 的线程安全

根据thiswebsite,MPI::COMM_WORLD.Send(...)的用法是线程安全的。但是,在我的应用程序中,我经常(并非总是)遇到死锁或出现段错误。附上MPI::COMM_WORLD的每个电话带有mutex.lock()的方法和mutex.unlock()始终如一地消除死锁和段错误。这就是我创建线程的方式:constautocommunicator=std::make_shared();std::vector>handles;for(size_ti=0;iCommunicator是一个具有std::mutex的类成员并独占调用诸如MPI::COMM_WORLD.Send(

abaqus2021+vs2018+intel oneAPI2022关联程序

1、安装abaqus2021(教程自行百度),保证abaqus安装没问题即可;2、安装Microsoftvisualstudio2018(要在安装inteloneAPI之前安装);3、安装inteloneAPI,两个安装包先安装Intel®oneAPIBaseToolkit(本文version2022.2.0),再安装Intel®oneAPIHPCToolkit(本文version2022.2.0)顺序不能出问题。关联1、搜索栏:高级系统设置(图1);进入系统属性(图2)——高级(图2)——环境变量——系统变量(图3)——选中Path(图3)——编辑——新建(图4)图1图2 图3图4 2、a)

docker - 将 MPI 与 docker 容器一起使用

我已经创建了一个基于Ubuntu16.04的docker镜像,并包含运行MPI所需的所有依赖项。它在docker-hub上公开,地址为:https://hub.docker.com/r/orwel84/ubuntu-16-mpi/我使用这个图像来创建一个MPI容器。我还可以编译一个简单的mpi-hello-world.c(它位于容器内)并使用mpirun运行它。这些是我使用的步骤,(如果你安装了Docker,你也可以重现它们):dockerrun-itorwel84/ubuntu-16-mpibash(在容器的外壳上)mpirun-np4--allow-run-as-root./mpi

docker - 将 MPI 与 docker 容器一起使用

我已经创建了一个基于Ubuntu16.04的docker镜像,并包含运行MPI所需的所有依赖项。它在docker-hub上公开,地址为:https://hub.docker.com/r/orwel84/ubuntu-16-mpi/我使用这个图像来创建一个MPI容器。我还可以编译一个简单的mpi-hello-world.c(它位于容器内)并使用mpirun运行它。这些是我使用的步骤,(如果你安装了Docker,你也可以重现它们):dockerrun-itorwel84/ubuntu-16-mpibash(在容器的外壳上)mpirun-np4--allow-run-as-root./mpi