问题标签 [intel-fortran]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
847 浏览

profiling - 从 ifort 11.1 构建的分析代码产生 __powr8i4 例程,它是什么?

我用 Intel 11.1 构建了一个 Fortran 代码。我使用 -p 选项构建它以生成分析数据。当我检查这些结果时,存在一些不属于我的代码的例程。我想它们是由英特尔放在那里的。其中包括:

还有其他人。当我在没有优化的情况下构建代码时,代码不会在其中花费太多时间。除了结果显示 __powr8i4 的使用率为 3.3%。但是,当我使用优化构建代码时,这个数字会上升到大约 35%。我似乎无法找出这些例程是什么,但它们使我的结果感到困惑,因为我想知道在哪里优化我的代码。

0 投票
2 回答
190 浏览

fortran - 过早确定函数返回值

我有一个t_file带有终结例程的派生类型,close它只是将“终结”写入屏幕。还有一个函数返回 type 的实例t_file。这个程序的输出是

我有两个问题:

  • 为什么最终确定发生在输出之前Just opened
  • 为什么最终确定会发生两次

我的编译器是 Intel(R) Visual Fortran Composer XE 2011 12.1.3526.2010。

这是代码:

0 投票
1 回答
543 浏览

arrays - 定义为指针的指针数组的 Fortran 数组(ifort 11.1 中的错误?)

我有一个问题和一个问题(我认为它们是相关的)。

问题:我可以在 Fortran 90 中使用定义为指针的指针数组吗?

问题:我有代码(见下文),ifort 11.1 在最后一次写入时给出了段错误。其他编译器,例如 gfortran 4.6.3、ifort 11.1.072、12.0.1 等,都可以正常工作

您可以将代码视为 Python 附加功能的模拟。

预期结果是:

ifort 11.1 在最后一行给出分段错误。现在奇怪的事情来了。如果您注释掉字符串类型中的整数声明,您也将使用 ifort 11.1 获得预期结果。

这是编译器问题还是我使用非标准 Fortran 90 结构?

0 投票
2 回答
12325 浏览

visual-studio-2010 - 错误 LNK2019:函数中引用了未解析的外部符号 MPI_INIT

我正在尝试使用 Visual Studio 2010 和 Intel Composer XE 2011 SP1 的试用版,ifort Visual fortran 编译器与 Intel Parrelel Studio 2011。我已经设法使用 64 位版本的 ifort 编译了所有目标文件,但是在链接文件时我收到以下错误:

我尝试通过添加命令 /L"C:\PathtoMPILibrary\" 链接到 64 位 Intel MPI 库以及 MPICH2 64 位库,但无济于事。我也尝试过使用这个 makefile,使用 mingw32 包中的 gmake 运行:

但是当我运行 gmake 时,出现以下错误:

我已经用尽了论坛,我需要在 64 位窗口下用 MPI 编译它。任何帮助将不胜感激!谢谢。

0 投票
1 回答
586 浏览

generics - 具有 ifort 编译器的通用内部程序

以下适用于 gfortran 或 f95,但不适用于 ifort:

ifort 返回此错误:

假设不能使用任何模块过程(我们不希望模块中有 addr 和 addi)并且 ifort 必须用作编译器。任何帮助,将不胜感激。

0 投票
2 回答
2142 浏览

fortran - 如何使循环计数器不大于最终值?

所以样本循环:

给我2作为 的最终值i。如何在 Windows 上为 Visual Studio 设置 Intel Fortran 以获得最终值1for i

0 投票
1 回答
1770 浏览

makefile - Makefile:英特尔 fortran、文件夹中的源文件和英特尔数学核心函数库

我在文件夹 /ex 中有一个 main.f90。f77 子程序文件在 /ex/src 中。并且子程序文件再次使用 BLAS 和 LAPACK 库。对于 BLAS 和 LAPACK,我必须使用 Intel Math Kernel Library。

Intel fortran 和 mkl 文件夹如下所示:

/ex 中要编译的 main.f90 的 makefile 代码是什么?谢谢!

0 投票
2 回答
2396 浏览

fortran - 使用 ifort 进行数组复制的程序崩溃

该程序Illegal instruction: 4在 MacOSX Lion 和 ifort (IFORT) 12.1.0 20111011 上崩溃

相同的程序适用于 gfortran。我看不出有什么问题。有任何想法吗 ?展开副本并在列上执行显式循环在两个编译器中都有效。

请注意,使用可分配而不是指针我没有问题。

如果语句在模块内或不在模块内,行为是相同的。我在 ifort (IFORT) 12.1.3 20120130 上确认了相同的行为。

显然,Linux 和 ifort 12.1.5 没有问题

我尝试使用以下链接选项增加堆栈大小

ifort -Wl,-stack_size,0x40000000,-stack_addr,0xf0000000 test.f90

但我仍然得到同样的错误。增加 ulimit -s 来解决同样的问题。

编辑2:我做了更多的调试,显然问题发生在数组拼接操作时

涉及可疑接近 16 M 数据的值。

我正在比较生成的操作码,但如果有一种方法可以查看更具交流性的中间代码形式,我将不胜感激。

0 投票
1 回答
12515 浏览

visual-studio-2010 - Fortran 90 模块的神秘本质

Fortran 90 模块是短暂的生物。我使用了一段时间的(单一)模块并取得了一些成功(使用 Intel Visual Fortran 和 Visual Studio 2010 进行编译)。然后我写了另一个模块并尝试在另一个函数中使用它,然后收到此错误:

所以我删除了有问题的模块。但是现在我在尝试访问我的原始模块后收到了同样的错误!

我怎样才能找到这些神秘的生物?为什么一个模块可以工作而不是两个?我假设我需要删除并重新编译它们,或者告诉编译器以某种方式包含它们。我知道源代码的文件位置,但不知道它们编译到的位置。

0 投票
0 回答
1178 浏览

linux - 使用英特尔 ifort 编译器启用到标准输出的缓冲 I/O

我已经阅读了有关使用 ifort (使用-assume buffered_ioor FORT_BUFFERED=true)启用缓冲 I/O 的英特尔文档,这适用于直接输出到文件。但是,我们有大型应用程序正在写入标准输出(例如write(*,*)write(stdout,*)),它被重定向到一个文件。在这种情况下,这两种缓冲技术都不起作用。

除了重构代码以直接写入文件之外,是否有一种方法可以使用 ifort 在 stdout 上启用缓冲 I/O?这在例如 gfortran 上默认启用。

我们在 SLES 11 上使用 ifort 12.0。

更新:感谢您的评论。我正在通过缓冲程序(如 tee)研究 stdbuf 和/或管道作为解决方法。到目前为止,我还无法做出可衡量的差异。

更新 2:

我已经尝试了 Douglas 的建议的一些实验,通过另一个程序进行管道传输。tee 和 cat 都缓冲,实际上缓冲似乎是由管道本身在 8K 左右完成的。然而,最初的 write() 调用、管道以及管道程序(tee、cat 等)的系统调用的开销太高,无法使其成为可行的解决方案。