问题标签 [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.
macos - Mac OS X 的 Fortran 调试器
任何人都可以为 mac 推荐一个好的 Fortran 调试器(除了通过 fink 或 macports 安装 gdb 等)吗?
fortran - Fortran技术查询
我在 Fortran 中有以下函数签名。我是 Fortran 语言的新手——0.
下面的函数是什么意思?
optimization - 提高速度
我知道一个广泛的问题,但是:
有没有人有关于提高 Fortran 程序执行速度的一般提示?
static - 与 gfortran 和 gcc 静态链接的混合语言
我有一些用 C 和 Fortran 编写的代码,我想编译成静态链接的可执行文件。如果我动态编译代码(使用-fno-underscoring
gfortran 的选项),一切正常。不过,我想把它链接成一个.so文件,静态链接大部分需要的库,然后动态链接到libkrb5
,很像这篇博文中描述的方法。
我按照上一篇博文中的步骤,成功地编译了 .so 库,没有任何问题。nm
表明它状态良好,我的 Fortran 子例程和 C 函数出现了:
第一个函数是用 Fortran 编写的,第二个函数是用 C 编写的。它们没有下划线或任何东西,所以它们应该链接。我的主程序(在 Fortran 中)像其他 Fortran 源文件一样编译。但是,当我尝试链接时,出现错误:
collect2: ld 返回 1 个退出状态
在main_program.o
中,我可以看到有
一切看起来都井井有条,为什么它没有链接?
c++ - BLAS 是如何获得如此极致的性能的?
出于好奇,我决定将我自己的矩阵乘法函数与 BLAS 实现进行基准测试......我可以说对结果最不惊讶:
自定义实现,10 次 1000x1000 矩阵乘法的试验:
BLAS 实现,10 次 1000x1000 矩阵乘法的试验:
这是使用单精度浮点数。
我的实现:
我有两个问题:
- 鉴于矩阵-矩阵乘法说:nxm * mxn 需要 n*n*m 次乘法,因此在上述 1000^3 或 1e9 操作的情况下。在我的 2.6Ghz 处理器上,BLAS 怎么可能在 1.32 秒内完成 10*1e9 操作?即使乘法是一个单一的操作并且没有做任何其他事情,它也应该需要大约 4 秒。
- 为什么我的实现这么慢?
fortran - Fortran 结构和指针
我在 C 中有一个函数。我想从 Fortran 调用这个函数。此函数包含 2 个由指针传递的结构。我如何在 Fortran 中做到这一点?
前任:
在 C 中:
我如何从 Fortran 调用它?这里a
是输入结构,b
是输出结构。我能够在 Fortran 中填充结构,但它们在通过后无法维护任何数据。
我如何调用fun(*a,*b)
Fortran?
fortran - 通过写入输出“修复”了 Fortran 运行时错误
我在使用一些用于研究的旧代码时遇到问题,我想使用英特尔 Fortran 编译器进行编译。在一个特定的子例程中,除非我添加一个write
只输出循环索引值的语句,否则我会遇到分段错误。
是什么导致了我的错误,以至于这个 write 语句可以修复我的分段错误?(注意:j 被声明为整数)
谢谢,基利
fortran - Fortran 函数和返回值
如何在 Fortran 中编写一个将输入和输出都作为参数的函数?例如:
我想利用输出值。我已经尝试过这样的事情,但输出变量没有保存该值。
具体来说,我从 Fortran 调用一个 C 函数,它将输入和输出作为参数。我能够成功传递输入值,但输出变量没有获取值。
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的问题,但它对我不起作用,因为该问题的答案意味着新的输出被添加到同一行的先前输出中;而不是新的输出覆盖以前的输出。
提前致谢。
arrays - 当我将 INTEGER 数组的大小指定为 200,000,000 时,为什么会出现 StackOverflowException?
200,000,000 远小于 32 位 INTEGER 的最大值 2,147,483,647。