问题标签 [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.
performance - Intel Fortran 中 MD 和 MT 的区别
我有这段代码,我用 Fortran 运行时库选项编译了MT
它MD
。我得到的是
使用 MD 运行 10 次:平均 5.29 秒
使用 MT 运行 10 次:平均 6.5 秒
有人知道这种差异吗?我认为在这种情况下结果应该是相同的,对吧?
fortran - 如何编译未知方言和未知库的 Fortran 代码
我正在尝试编译一些 Fortran 代码,根据文档,这些代码已知可以使用“Intel Fortran Compiler 11”进行编译。但是,当我尝试使用 Intel® Fortran Composer XE 2013 for OS X 附带的 ifort 版本(此处:http://software.intel.com/en-us/fortran-compilers)编译代码时,我得到一些错误。我怀疑我是 1) 使用的编译器与使用的 Fortran 的确切方言不兼容和/或 2) 没有包含一些必要的库。
我不是 Fortran 程序员,所以我希望有更多经验的人能够浏览代码并识别这是否只是使用不同编译器的简单问题,设置一些编译器选项,包括一些特定的库,或者如果我完全错过了其他东西。
完整的源代码可以在目录上方找到:http: //baydeltaoffice.water.ca.gov/modeling/deltamodeling/models/dsm2/dsm2.cfm
首先,我只是尝试在 /DSM2_v8_0_6_src/dsm2_v8_0/src/common 中编译 groups.f (这需要先编译一些其他模块),但最终目标是编译 DSM2_v8_0_6_src/dsm2_v8_0/src/ptm /native/fixedData.f 及其所有依赖项。
我使用的语法遵循这个基本模式:
为了了解我遇到的错误类型,这里有几种重复出现的类型:
fortran - 如何以 ifort 的名称“重新导出”在 Fortran 模块中重载的现有 bind(C) 函数?
在我尝试使用 ifort 之前,我对与 gfortran 配合良好的构造感到非常满意。虽然我从未见过它清楚地记录在案。我刚试过,它奏效了。我很好奇如何调整以下示例,以便 ifort 11.1 可以咀嚼它。
这是我收到的错误消息
它是 GNU 扩展吗?-pedantic
不抱怨。它像我期望的那样工作
我是否必须在接口 foo 中详细编写 foo0 声明?
更新 2013-03-31
我调整了上面的示例代码以包含bind(C)
. 由于它位于 中,因此即使与 gfortran 一起interface
使用也无法使用。module
对于之前不恰当的精简示例误导我深表歉意。
另一个更新 2013-03-31
显然ifort version 13.1.1
不支持这样的构造(无论我是否将 foo 重命名为 foo0 )
如果我module
在程序之前添加,我会得到
除非我在所有细节中再次明确声明该 bind(C) 接口,否则目前似乎无法做我想做的事:(
fortran - 使用 gfortran 安装 fortran 包
我想在两台不同的机器上安装这个包。 http://www.2decomp.org/download.html
在我的 Mac 笔记本电脑上,当我使用 Makefile.inc.x86 作为我的 Makefile.inc 并进行制作时,它可以立即运行而没有任何问题。但是在另一台机器上,当我使用相同的 Makefile.inc 文件时,我收到以下错误:
它们都是 Linux x86_64 机器。有什么想法可以将其安装在另一台机器上吗?
visual-studio-2012 - 使用 Fortran 在更新的 Visual Studio 中调试负字符长度
我最近从 Windows XP 和 Visual Studio 2005 更新到 Windows 7 和 Visual Studio 2012,并带来了大量的 Fortran 代码(内置 VS 和英特尔编译器)。我现在遇到了几个可能相关或不相关的错误:
当调用 foo(char1,real1,real2) 形式的子例程时,其中 char1 在调用子例程和 foo 中的长度均为 200,我得到“forrtl:严重(408):fort:(18):虚拟字符变量 'char1 ' 长度为 200,大于实际变量长度 -858993460 Image PC Routine Line Source libifcoremdd.dll 02AED3FE Unknown Unknown Unknown Stack trace异常终止” 我环顾四周,该数字似乎是转换为整数的十六进制地址(0xcccccccc)。为什么它会传递一个无意义的地址而不是长度?
当我尝试调试问题时,我在子例程调用处设置了一个断点并尝试介入,我收到一个错误“No Source Available No symbols are loaded for any call stack frame. The source code cannot be display”。
我还注意到我收到了几十个“无法找到或打开 PDB 文件”。似乎与我的源代码没有直接关系的错误。
不幸的是,该错误嵌入了数千行专有代码中,因此我无法将其全部发布,也无法通过一个简单的示例重现该错误。
有人对尝试的事情有任何建议吗?谢谢!
fortran - 比较fortran中的派生类型
我试图编译一个项目来解决一个球体上的 Navier-Stokes 问题: https ://fms.gfdl.noaa.gov/gf/
使用的默认编译器是 ifort,我想使用 gfortran,因为我想让它最终可供任何希望使用它的人使用。
在代码中的某些点,有类似的语句
, 其中 x 和 y 都是包含整数、实数和指针的派生类型(称为 domain1d/2d)。gfortran 抱怨说比较是在非数字和退出之间。
然后我下载了 ifort 的试用版,它编译没有问题。
所以,我想知道这是否是对类型/结构的每个成员的实际比较的某种 ifort 速记(我对 C 术语更满意!)或者我是否缺少一些基本的东西,是 fortran 的新手?
我知道比较派生类型有时没有什么意义,但在这里它似乎只是检查两者是否携带相同的信息。
谢谢,乔伊
command-line - 使用 devenv 将预处理器变量传递给英特尔 Fortran 编译器
我将 VS 2008 与 Intel(R) Fortran 编译器版本 10.1.025 一起使用。
为了构建我的解决方案,我使用了一个具有以下语法的批处理文件:
devenv /rebuild "Release|Win32" "c:...\solution.sln" /Project "ProjectName_InTheSolution"
使用配置“Release|Win32”,我在 VS ProjectProperties->Fortran->Proprocessor->Preprocessor Definitions 中指定值“test”。
在我的代码中,我正在测试是否定义了“测试”变量,哪个工作正常。
任何人都知道使用命令行更改 fortran 编译器的“预处理器定义”的任何方法吗?我还想在“预处理器定义”中添加值“commandLine”,因此将是“test;commandline”。
一些注意事项:
提前致谢
感谢您的回答,但也许我不完全理解您的解决方案,但这是我尝试过的:
1)我将“附加选项”(AO)更改为 /Dtest 并且: 1.1)如果我从 Visual Studio 或命令行编译,则检查“!DEC$ IF DEFINED (test)”为真
2)我将 AO 更改为“$(DEFINE)”并且: 2.1)从 Visual Studio 我看到警告:“命令行警告 #10161:无法识别的源类型 '$(DEFINE)';目标文件假定为 ifort”和检查“ !DEC$ IF DEFINED (test)" 为假 2.2) 我将定义变量添加到“用户环境变量”,与 2.1 相同的错误
3) 我将 AO 更改为 "/D$(DEFINE)" 我收到一个错误 "Bad syntax, '=' expected while processing '@$(define)' fortcom"
4)我将AO更改为“$(DEFINE)”并SET DEFINE = / test,也没有工作,“!DEC $ IF DEFINED(test)”为假
@cup 我想我需要更好地了解您的解决方案,如果您能给我提供有关您的解决方案的其他信息,将不胜感激。
我想要做的是:
现在我想从命令行控制将编译哪部分代码,执行如下操作:
这个有可能 ?预先感谢,瑞
fortran - Compaq Visual Fortran 与 gfortran FORMAT 语句的区别
我有一大段 Fortran 代码,我想用 gfortran 编译该代码。我以前没有使用过 Fortran。我不知道代码的具体规范是什么,但我发现它至少可以用 Compaq Visual Fortran 6.6 编译——所以我猜它是在它下面编写的。
一般的问题是:有没有自动 Compaq Visual Fortran 到 gfortran 的翻译器?我没有找到。
事实上,经过一些修复后,代码确实可以使用 gfortran 进行编译,但在运行时出现异常:它没有按预期读取输入文件。这是一个代码示例:
还有一个数据示例:
第一行是原始应用程序如何读取它,第三 - gfortran,第二 - 来自数据文件的行示例(1
-9
用于省略字符,-
用于读取,'
用于未提及的格式,.
在示例中而不是原始行中的空格)。
因此,结果将是:
gfortran 非常简单:它跳过 15 个字符,读取 6 个字符,跳过 7 个字符,依此类推。但原来的应用程序是另一种方式,我猜不出它的逻辑。它仍然读取指定数量的字符,但跳得比指定的更远。它确实阅读了预期阅读的内容。
我尝试指定它们出现在输入文件 ( 15X,A6,8X,A1,19X,A3
) 中的确切长度,它适用于 gfortran,但这不是一个长期解决方案。
所以,我更具体的问题是:gfortran 和 Compaq Visual Fortran 6.6中的语句有什么不同吗?FORMAT
(也许,我的想法是错误的FORMAT
是原因)
UPD
我想,可能有一些东西可以分成单词左右。我的意思是 gfortran 只计算字符,但 CVF 做了一些不同的事情。
fortran - 为 ifort 提供库的路径
免责声明:这不是我的领域,我不知道行话。
我正在尝试在计算服务器上编译和运行一些代码。机器上安装了英特尔编译器。当我尝试使用编译代码时
一切正常。如果我尝试优化:
我首先收到消息:
这似乎合乎逻辑。当我运行输出文件时,出现错误:
我搜索libgfortran
:
有没有办法告诉 ifort 可用的 libgfort 库?
fortran - 定义我自己的 TYPE 时,ifort 和 gfortran 的结果不同
我是 Fortran 的新手,但我通常发现我可以用 C 或 Matlab 做大部分事情,只要我了解模块和类型。但是,我对结果的这种差异感到困惑,这取决于我使用的是 gfortran(gcc 版本 4.6.2)还是 ifort(13.0.2)。Gfortran 给了我预期的结果,但 ifort 给了我 3 个空白行!任何想法为什么?
这是使用 gfortran 编译的输出
使用 ifort,我只得到 3 个空行,尽管它编译得很好!!
提前致谢。