- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在通过以下命令编译我的代码:
icc -ltbb test.cxx -o test
然后当我运行程序时:
time ./mp6 100 > output.modified
Floating exception
4.871u 0.405s 0:05.28 99.8% 0+0k 0+0io 0pf+0w
我收到“ float 异常”。以下是异常前后的 C++ 代码:
// before
if (j < E[i]) {
temp += foo(0, trr[i], ex[i+j*N]);
}
// after
temp += (j < E[i])*foo(0, trr[i], ex[i+j*N]);
这是 boolean 代数...所以 (j < E[i]) 要么是 0 要么是 1 所以乘法结果要么是 0 要么是 foo() 结果。我不明白为什么这会导致 float 异常。这就是 foo() 所做的:
int foo(int s, int t, int e) {
switch(s % 4) {
case 0:
return abs(t - e)/e;
case 1:
return (t == e) ? 0 : 1;
case 2:
return (t < e) ? 5 : (t - e)/t;
case 3:
return abs(t - e)/t;
}
return 0;
}
foo() 不是我写的函数,所以我不太确定它的作用……但我认为问题不在于函数 foo()。关于 boolean 代数,有什么我不理解的,或者在 C++ 中的工作方式与我所知道的不同吗?知道为什么这会导致异常吗?
谢谢,赫里斯托
最佳答案
您几乎可以肯定在 foo
中除以零。
一个简单的程序
int main()
{
int bad = 0;
return 25/bad;
}
也打印
Floating point exception
在我的系统上。
因此,当s % 4
为零时,您应该检查e
是否为0,或者当s 时,
是 2 或 3。然后返回对您的情况有意义的任何值,而不是尝试除以零。t
是否为0 % 4
foo
被调用和评估并导致错误很重要。
样本来源:
#include <iostream>
int maybe_cause_exception(bool cause_it)
{
int divisor = cause_it ? 0 : 10;
return 10 / divisor;
}
int main()
{
std::cout << "Do not raise exception: " << maybe_cause_exception(false) << std::endl;
int x = 0;
std::cout << "Before 'if' statement..." << std::endl;
if(x)
{
std::cout << "Inside if: " << maybe_cause_exception(true) << std::endl;
}
std::cout << "Past 'if' statement." << std::endl;
std::cout << "Cause exception: " << x * maybe_cause_exception(true) << std::endl;
return 0;
}
输出:
Do not raise exception: 1
Before 'if' statement...
Past 'if' statement.
Floating point exception
关于c++ - 使用icc编译器的 float 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2752499/
我没有 icc已安装,但我需要所有编译器优化标志的列表。我试过谷歌并搜索他们的网站文档,但我找不到任何东西。 我找到了一个列表 all编译器选项,但我只需要优化选项。 最佳答案 此页面列出了 IC 优
我使用的是 ubuntu 14.04。我刚刚下载并安装了英特尔并行工作室 2016。 如果我不是从 icc 文件夹中输入 icc,则会收到错误命令未找到。有没有办法像 gcc 一样设置 icc(在我运
我最近开始使用 ICC (18.0.1.126) 来编译一段代码,该代码可以在任意优化设置上与 GCC 和 Clang 一起正常工作。该代码包含一个汇编例程,该例程使用 AVX2 和 FMA 指令将
我的问题是我想从命令行调用 icc 编译器,但我的电脑找不到它。我已经安装了最新的 oneAPI 并获取了 setvars.sh。 即使我在安装例程下搜索'icc'文件我也找不到icc编译器文件。 '
使用 ICC 编译时,每条指令后面都是 2 个点分隔的数字,并以哈希符号为前缀。这是什么意思? For example: L__routine_start__Z12testFunctionPii_0:
有人可以解释为什么 icc 在下面的代码 1 中没有执行循环不变代码运动(移动 a 的指针赋值)的原因。当 a 指针赋值从代码 2 中完成的 t6 循环中移出时,我看到性能提高了 40%。我尝试将指针
考虑以下代码: template struct Foo { }; template struct Foo> { static void print() { std::cerr s
我在 Visual Studio 2012 中使用 Intel C++ 13.0.1.119 Build 20121008 for IA-32 在 Windows 上运行。我一直遇到链接器错误问题,并
我一直在尝试使用英特尔的四精度 float 。我有以下代码,它返回了意外的结果。 #include #include int print(const char *label, _Quad r) {
我写了一个应用程序,它通过 ImageMagick 修剪和调整一堆图像的大小。图像也被转换为灰度。但是当我尝试在 Photoshop CC 中打开转换后的图像时,会出现以下警告: The embedd
我正在用 icc 编译一个 cpp 代码(在 ubuntu 下): icc -I/usr/share/R/include -I/~/Desktop/work/p1/geqw4/vi3/out/sp/c
首先让我说我是 R 的新手,并试图弄清楚如何在我的特定数据集上运行 icc,这可能与正常情况下有点不同。 数据集如下所示 +------------+------------------+------
我遇到了 icc 问题,到目前为止我还没有找到任何解决方案。我的程序用gcc编译时运行正常,但用icc编译时显然没有执行任何操作。不会发生运行时错误。该程序结束得非常快(几毫秒),但预计需要几秒钟(对
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 7年前关闭。 Improve thi
在尝试使用 Jasper Reports 生成符合 PDF/A 标准的 PDF 时,我得到了 net.sf.jasperreports.engine.util.JRPdfaIccProfileNotF
因此,当使用基本的icc bob.cpp -o bob 编译并运行时,出现以下代码段错误: #include int foo () { return 6; } int main() { st
现在我正在使用 icc 来编译和运行我的 ANSI C 代码。 当我打开-O2 优化时,一切正常。但是,当我更改为 -fast 时,结果会有所不同(有很多 nan)。 我搜索并尝试,发现错误存在于-x
我想报告一个有趣的错误。下面的这段代码应该打印出 20 次“1.0”。相反,在我的 mac(雪豹 10.6.8)上使用 icc(11.1)编译时,我得到不稳定的值(16 次“0.0”然后 4 次“1.
有没有办法在使用英特尔编译器时改变缓存写入策略。我发现 Intel Core i7 处理器的一级缓存是回写缓存。 我的问题是:是否有任何可能的方法来调整编译器,将缓存策略从回写更改为直写? 最佳答案
我目前在 centos7 上校准显示器时遇到问题。使用 gnome 或 kde,我无法正确使用颜色设置来应用新创建的 ICC 配置文件。设备选项卡未显示列出(仅安装了打印机)。 经过一些阅读,我发现
我是一名优秀的程序员,十分优秀!