问题标签 [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.
mpi - MPI 和 OpenMP。我还有选择吗?
我有一个线性代数代码,我试图让它运行得更快。它是一种迭代算法,其中包含循环和矩阵向量乘法。到目前为止,我使用了 MATMUL(Fortran Lib.)、DGEMV,尝试在 OpenMP 中编写我自己的 MV 代码,但该算法在可扩展性方面并没有做得更好。无论我分配多少个处理器(我已经尝试了 64 个处理器),加速都几乎没有 3.5 - 4。分析显示在 Matrix-Vector 中花费了大量时间,其余时间相当名义上。我的问题是:我有一个拥有大量 RAM 和处理器的共享内存系统。我曾尝试调整代码的 OpenMP 实现(包括矩阵向量),但没有帮助。在 MPI 中编码会有所帮助吗?我不是 MPI 的专业人士,但微调消息通信的能力可能会有所帮助,但我不能确定。任何意见?
更一般地说,从我读过的文献来看,MPI = 分布式,OpenMP = 共享,但它们能在其他领域表现良好吗?像共享中的 MPI?它会起作用吗?如果做得好,它会比 OpenMP 实现更好吗?
linux - 如何导出路径到计算节点,并行编程
我在使用 ifort 时遇到问题。我用 ifort/mpich1 编译了一个代码,但是每当我尝试在多个节点上运行它时,代码都会到达某个点并挂起并出现错误:
在四处寻找时,我很确定这是由于计算节点上未获取 ifortvars shell 脚本(如果我尝试在一个节点上连续触发代码,但没有获取 ifort vars 我得到相同确切的错误)。
绕过这个问题的最佳方法是什么?通过 mpirun 运行时,似乎我的“.bashrc”文件没有执行,因为我在 .bashrc 文件中有“source ...”命令。我还尝试将该行添加到 /etc/bash.bashrc 文件中,但没有成功。或者,我认为编译时的静态链接可能会解决问题,所以我包括了
使用 ifort 编译但无济于事时,我仍然收到错误消息。
有谁知道如何绕过这个问题,本质上是如何使用 ifort 编译以便在运行编译程序时不需要“source ifortvars”(更理想的解决方案),或者如何推出我的路径,或者如何通过 MPI 调用获取变量?谢谢。
debugging - gdb - 没有找到调试符号 - 但调试器仍然可以工作
我认为为了使用 gdb 进行调试,它需要找到调试符号,但 gdb 显然在没有它们的情况下也可以工作(?)。我正在混合 c 代码和 fortran 代码。今天我的目标是调试代码的 c 部分。main 位于 c 中,fortran 代码仅在此 main 调用的某些库中进行干预。我在 linux 上使用 icc 编译我感兴趣的代码,并带有以下标志:
当我在代码上运行 gdb 时,它说
'从 /my/path/myexecutable.out 读取符号...(未找到调试符号)...完成。'
但后来我成功地正确调试了我的 c 代码。它读取代码行并正确执行等等。我很高兴一切正常,但我的问题是:gdb 是否应该显示关于找不到调试符号的声明?或者也许他们不需要?
谢谢!
c - idb 找不到函数——有什么提示吗?
我发现 idb 无法进入我的功能之一。
我正在将一个 c 程序 (main.c) 与一个属于模块 (mod1) 的 fortran90 函数 (func1) 链接,该函数链接到另一个模块 (mod2) 中的另一个函数 (func2)。结构是这样的
main.c (c) ---> func1 进入 lib1.a (fortran) 的 mod1 ---> func2 进入 lib2.a (fortran) 的 mod2
*问题是:我无法使用 idb 进入 func2。当我尝试从 func1 进入 func2 时,调试器会转到 func1 中的下一行。我没有使用 gdb 因为我知道它不能进入 fortran 模块,可以吗?
我正在使用带有以下标志的 Intel 11.1 进行编译:
我不知道该怎么做,任何提示表示赞赏
编辑:II写了一个简单的fortran 90程序,直接调用lib2.a而不使用lib1.a。我发现 idb 也无法进入 lib2.a。
我像这样编译库
我不明白出了什么问题,我通常编译这样的库并且调试器可以工作!
任何的想法?
fortran - 在 Fortran 中调用子程序(分段错误)
以下代码在 Linux 系统上使用 pgf90 编译时出现分段错误,而当我在 Windows 上使用 Intel Visual FORTRAN 时成功运行。
对此有何解释?
fortran - 测试目录是否存在
我正在尝试使用 Fortan90 验证目录是否存在。在我发现的各种网站上:
但是,inquire
返回False
目录是否存在,如果我执行此代码两次,我会收到一条错误消息
无法制作目录,文件已存在
如果我使用:
使用现有文件测试,inquire
返回true
.
如何检查目录是否存在?我正在使用 ubuntu 11.04 和 ifort 编译器。
environment-variables - ifort 环境变量集错误
我已经安装了 intel Composer XE,因为我需要 intel 编译器。
问题是,当我完成安装时,我收到了这条消息:
要开始使用位于 /home/gsrodrigues/intel/composer_xe_2011_sp1.9.293 中的 Intel(R) Composer XE 2011 Update 9:
使用以下方法之一设置终端窗口的环境变量(如果您使用的是 32 位平台,请将“intel64”替换为“ia32”)。
对于 csh/tcsh:
对于 bash:
调用已安装的编译器: $ source install-dir/bin/compilerv ars.sh intel64
要获得帮助,请附加 -help 选项或使用 man 命令。
要查看入门文档表:install-dir/Documentation/en_US/documentation_f.htm。
但是每次我尝试使用“intel64”命令时,我都会收到以下消息:
-bash:/home/gsrodrigues/intel/composer_xe_2011_sp1.9.293/bin/intel64/idbvars.sh:没有这样的文件或目录
当我使用 'ia32' 命令时没有出现问题,但我仍然无法创建简单的 fortran 可执行文件。
fortran - 制作 Fortran 90 子程序“PURE”需要改变什么?
我已经定义了一个代码模块(一个 Fortran F90 文件)并为它提供了这两个子例程:
编译器(英特尔 Fortran 12,针对 32 位 Windows,无论其价值如何)返回一条错误消息:
错误 #7137:PURE 过程中引用的任何过程,包括通过定义的操作或赋值引用的过程,都必须显式声明为 PURE。[XROTATION]
我有点难过。如何更改此代码以便 PURE 子例程“DummyDummy”编译?
formatting - 取决于变量的输出格式字符串
我希望将 Fortran 写入语句格式化为依赖于某个变量。例如,我可以写:
哪里nvari = 3
。但是,如果在某些情况下,我实际上有 4 个变量(即nvari = 4
)。我想写这样的东西:
现在,nvari
可以是任何东西,输出将按我喜欢的方式工作。我怎样才能使这样的工作?