fortran如何调用julia?

使用julia调用fortran代码相对比较简单,只需要使用ccall就可以了。那么,如果反过来呢?怎么在fortran中调用julia的函数呢?

现在我有一个比较大的fortran的工程,想将它移植到julia上。现阶段打算逐步把函数都移动到julia上然后逐步测试。所以才有此一问。请问是否还有更好的思路?

官方文档是你的好伙伴:embedding Julia

移植Fortran个人不太推荐一开始就通过调用的方式来测试。调用在最后阶段框架基本搭好进行debug的时候可能有用,但如果原始的Fortran程序结构模块足够清晰的话,每一个部分函数单独的unit test就足够检查功能了;如果发现可以优化的部分,Julia和Fortran架构的差别可以启发你如何写出更Julian style的代码。

不同时期的Fortran代码风格差异也很大,如果你恰巧遇到了common block或者global variable满天飞的情况,那就会比较费时费力。个人经验,调用Fortran可以用,但对于譬如全局变量、常数等等会有很多一开始意想不到的小问题。

大工程更需要考虑移植需要考虑到的是假设能做,相较于直接调库最终的收益有多大。譬如偏底层的LAPACK和BLAS库,虽然有人设想过,但迄今为止依旧是使用成熟的Fortran库。

3 个赞

感谢大佬的回复。我之所以有这个问题是因为我这个大项目里面c,c++,fortran,shell,perl满天飞,而且做单元测试的话,我很怕自己无法分清楚误差是由于代码精度还是其他原因造成的——我在往openacc里移植的时候就遇到了许许多多这类问题,debug耗费了我大量时间。总之,感谢大佬的解答。我现在正在严肃考虑放弃移植 :rofl: