问题标签 [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 投票
2 回答
4300 浏览

macos - Mac OS X 的 Fortran 调试器

任何人都可以为 mac 推荐一个好的 Fortran 调试器(除了通过 fink 或 macports 安装 gdb 等)吗?

0 投票
2 回答
383 浏览

fortran - Fortran技术查询

我在 Fortran 中有以下函数签名。我是 Fortran 语言的新手——0.下面的函数是什么意思?

0 投票
6 回答
450 浏览

optimization - 提高速度

我知道一个广泛的问题,但是:

有没有人有关于提高 Fortran 程序执行速度的一般提示?

0 投票
1 回答
3204 浏览

static - 与 gfortran 和 gcc 静态链接的混合语言

我有一些用 C 和 Fortran 编写的代码,我想编译成静态链接的可执行文件。如果我动态编译代码(使用-fno-underscoringgfortran 的选项),一切正常。不过,我想把它链接成一个.so文件,静态链接大部分需要的库,然后动态链接到libkrb5,很像这篇博文中描述的方法。

我按照上一篇博文中的步骤,成功地编译了 .so 库,没有任何问题。nm表明它状态良好,我的 Fortran 子例程和 C 函数出现了:

第一个函数是用 Fortran 编写的,第二个函数是用 C 编写的。它们没有下划线或任何东西,所以它们应该链接。我的主程序(在 Fortran 中)像其他 Fortran 源文件一样编译。但是,当我尝试链接时,出现错误:

collect2: ld 返回 1 个退出状态

main_program.o中,我可以看到有

一切看起来都井井有条,为什么它没有链接?

0 投票
8 回答
46364 浏览

c++ - BLAS 是如何获得如此极致的性能的?

出于好奇,我决定将我自己的矩阵乘法函数与 BLAS 实现进行基准测试......我可以说对结果最不惊讶:

自定义实现,10 次 1000x1000 矩阵乘法的试验:

BLAS 实现,10 次 1000x1000 矩阵乘法的试验:

这是使用单精度浮点数。

我的实现:

我有两个问题:

  1. 鉴于矩阵-矩阵乘法说:nxm * mxn 需要 n*n*m 次乘法,因此在上述 1000^3 或 1e9 操作的情况下。在我的 2.6Ghz 处理器上,BLAS 怎么可能在 1.32 秒内完成 10*1e9 操作?即使乘法是一个单一的操作并且没有做任何其他事情,它也应该需要大约 4 秒。
  2. 为什么我的实现这么慢?
0 投票
2 回答
953 浏览

fortran - Fortran 结构和指针

我在 C 中有一个函数。我想从 Fortran 调用这个函数。此函数包含 2 个由指针传递的结构。我如何在 Fortran 中做到这一点?

前任:

在 C 中:

我如何从 Fortran 调用它?这里a是输入结构,b是输出结构。我能够在 Fortran 中填充结构,但它们在通过后无法维护任何数据。

我如何调用fun(*a,*b)Fortran?

0 投票
1 回答
2425 浏览

fortran - 通过写入输出“修复”了 Fortran 运行时错误

我在使用一些用于研究的旧代码时遇到问题,我想使用英特尔 Fortran 编译器进行编译。在一个特定的子例程中,除非我添加一个write只输出循环索引值的语句,否则我会遇到分段错误。

是什么导致了我的错误,以至于这个 write 语句可以修复我的分段错误?(注意:j 被声明为整数)

谢谢,基利

0 投票
2 回答
11576 浏览

fortran - Fortran 函数和返回值

如何在 Fortran 中编写一个将输入和输出都作为参数的函数?例如:

我想利用输出值。我已经尝试过这样的事情,但输出变量没有保存该值。

具体来说,我从 Fortran 调用一个 C 函数,它将输入和输出作为参数。我能够成功传递输入值,但输出变量没有获取值。

0 投票
4 回答
20892 浏览

printing - 如何格式化 PRINT 或 WRITE 语句以覆盖控制台屏幕上的当前行?

我想在控制台屏幕上显示使用 DO 循环完成的计算进度。我可以像这样将进度变量打印到终端:

上述代码在控制台屏幕上的输出是:

10.00 20.00 30.00 40.00 50.00 60.00 70.00 80.00 90.00 100.00

全部在同一行,仅由控制台窗口包裹。

ADVANCE='No'参数和TL10(制表符留下这么多空格)编辑描述符可以很好地覆盖同一行上的文本,例如以下代码的输出:

是:

500

代替:

100 500

因为 TL4 编辑描述符。

从这两个实例可以得出结论,WRITE 语句不能覆盖由另一个 WRITE 语句或先前执行相同的 WRITE 语句(如在 DO 循环中)写入的内容。

这可以以某种方式克服吗?

我在 Windows 7 RC1 上使用 FTN95 编译器。(G95 编译器的安装程序蓝屏 Windows 7 RC1,甚至认为它在 Vista 上运行良好。)

我知道Supressing line breaks in Fortran 95 write statements的问题,但它对我不起作用,因为该问题的答案意味着新的输出被添加到同一行的先前输出中;而不是新的输出覆盖以前的输出。

提前致谢。

0 投票
1 回答
229 浏览

arrays - 当我将 INTEGER 数组的大小指定为 200,000,000 时,为什么会出现 StackOverflowException?

200,000,000 远小于 32 位 INTEGER 的最大值 2,147,483,647。