Intel® Parallel Composer

面向英特尔® 至强融核™ 协处理器(和英特尔® 至强® 处理器)架构应用的浮点计算 R2R 再现性

 

问题

如果在相同处理器上针对相同输入数据重新运行相同的程序,得到的结果相同吗?

串行代码

串行代码浮点运算结果的差异的唯一已知来源是由外部环境更改引发的数据调整。 例如,用户动态分配了一个包含日期的新字符串。 该字符串的大小随一年中的月份或周的日期而不同,因此需要对分配的日期进行后续调整。 调整范围决定着哪些循环迭代是循环开头或循环结尾(remainder loop)的组成部分,以及哪些是矢量化内核的组成部分。 这反过来影响浮点约分运算的顺序;按照指定精度对不同直接结果执行舍入处理可缩小最终结果的差异范围。 开头、结尾和内核之间的优化不同可得出相似的差异范围。 这些差异范围可通过以下两个方式预防:

1)      通过调整在运行时间分配的任何数据。 对于 C/C++ 编程,可使用经过调整的 malloc/calloc/free 版本等等,例如 _mm_malloc() 和 _mm_free() 或 Posix 类型。 对于 Fortran 编程,!DIR$ ATTRIBUTES ALIGN:64 :: 阵列指令,或命令行交换 -align array64byte (推荐)。 数据调整为 64 位边界也具有性能优势。

  • Developers
  • Apple OS X*
  • Linux*
  • Microsoft Windows* (XP, Vista, 7)
  • Microsoft Windows* 8
  • C/C++
  • Fortran
  • Intel® C++ Compiler
  • Intel® C++ Composer XE
  • Intel® Composer XE
  • Intel® Fortran Compiler
  • Intel® Fortran Composer XE
  • Intel® Parallel Composer
  • Intel® Visual Fortran Composer XE
  • floating-point
  • reproducibility
  • Intel® Many Integrated Core Architecture
  • Diagnostic 2315: header name contains characters that cannot be represented in Unicode

    Thank you for your interest in this diagnostic message. We are still in the process of documenting this specific diagnostic.

    Please let us know of your experience with this diagnostic message by posting a comment below. Your interest in this diagnostic will help us prioritize the order we document diagnostics.

  • Linux*
  • Apple OS X*
  • Microsoft Windows* (XP, Vista, 7)
  • C/C++
  • Intel® C++ Composer XE
  • Intel® C++ Compiler
  • Intel® Parallel Composer
  • error
  • warning
  • remark
  • Diagnostic 2332: a value of type "type" cannot be assigned to an entity of type "type" (dropping qualifiers)

    Thank you for your interest in this diagnostic message. We are still in the process of documenting this specific diagnostic.

    Please let us know of your experience with this diagnostic message by posting a comment below. Your interest in this diagnostic will help us prioritize the order we document diagnostics.

  • Linux*
  • Apple OS X*
  • Microsoft Windows* (XP, Vista, 7)
  • C/C++
  • Intel® C++ Composer XE
  • Intel® C++ Compiler
  • Intel® Parallel Composer
  • error
  • warning
  • remark
  • Diagnostic 2349: expecting an array or pointer variable

    Thank you for your interest in this diagnostic message. We are still in the process of documenting this specific diagnostic.

    Please let us know of your experience with this diagnostic message by posting a comment below. Your interest in this diagnostic will help us prioritize the order we document diagnostics.

  • Linux*
  • Apple OS X*
  • Microsoft Windows* (XP, Vista, 7)
  • C/C++
  • Intel® C++ Composer XE
  • Intel® C++ Compiler
  • Intel® Parallel Composer
  • error
  • warning
  • remark
  • Diagnostic 2366: vector_size attribute requires an arithmetic or enum type

    Thank you for your interest in this diagnostic message. We are still in the process of documenting this specific diagnostic.

    Please let us know of your experience with this diagnostic message by posting a comment below. Your interest in this diagnostic will help us prioritize the order we document diagnostics.

  • Linux*
  • Apple OS X*
  • Microsoft Windows* (XP, Vista, 7)
  • C/C++
  • Intel® C++ Composer XE
  • Intel® C++ Compiler
  • Intel® Parallel Composer
  • error
  • warning
  • remark
  • Diagnostic 2405: array of elements containing a flexible array member is nonstandard

    Thank you for your interest in this diagnostic message. We are still in the process of documenting this specific diagnostic.

    Please let us know of your experience with this diagnostic message by posting a comment below. Your interest in this diagnostic will help us prioritize the order we document diagnostics.

  • Linux*
  • Apple OS X*
  • Microsoft Windows* (XP, Vista, 7)
  • C/C++
  • Intel® C++ Composer XE
  • Intel® C++ Compiler
  • Intel® Parallel Composer
  • error
  • warning
  • remark
  • Diagnostic 2424: number of targets is limited to 4

    Thank you for your interest in this diagnostic message. We are still in the process of documenting this specific diagnostic.

    Please let us know of your experience with this diagnostic message by posting a comment below. Your interest in this diagnostic will help us prioritize the order we document diagnostics.

  • Linux*
  • Apple OS X*
  • Microsoft Windows* (XP, Vista, 7)
  • C/C++
  • Intel® C++ Composer XE
  • Intel® C++ Compiler
  • Intel® Parallel Composer
  • error
  • warning
  • remark
  • Diagnostic 2444: return from within a parallel loop is not currently supported

    Thank you for your interest in this diagnostic message. We are still in the process of documenting this specific diagnostic.

    Please let us know of your experience with this diagnostic message by posting a comment below. Your interest in this diagnostic will help us prioritize the order we document diagnostics.

  • Linux*
  • Apple OS X*
  • Microsoft Windows* (XP, Vista, 7)
  • C/C++
  • Intel® C++ Composer XE
  • Intel® C++ Compiler
  • Intel® Parallel Composer
  • error
  • warning
  • remark
  • Diagnostic 2465: parallel loop assumes a negative increment value

    Thank you for your interest in this diagnostic message. We are still in the process of documenting this specific diagnostic.

    Please let us know of your experience with this diagnostic message by posting a comment below. Your interest in this diagnostic will help us prioritize the order we document diagnostics.

  • Linux*
  • Apple OS X*
  • Microsoft Windows* (XP, Vista, 7)
  • C/C++
  • Intel® C++ Composer XE
  • Intel® C++ Compiler
  • Intel® Parallel Composer
  • error
  • warning
  • remark
  • Subscribe to Intel® Parallel Composer