Fortran Coder

查看: 7751|回复: 0
打印 上一主题 下一主题

[数学库] VS2013+Intel Fortran + Cublas

[复制链接]

1

帖子

1

主题

0

精华

新人

F 币
14 元
贡献
6 点
跳转到指定楼层
楼主
发表于 2015-6-22 21:50:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

大家好,在下fortran新手一枚.很冒昧的想请教一个fortran的问题。

概括来说是从fortran中调用c函数的问题。我的开发环境是VS2013+Intel fortran。我想在fortran中调用cublas库(Nvidia的一个使用GPU进行矩阵运算的c语言库,不知道怎么做。


一般来说我们可以在fortran中定义如下的interface来调用c函数:

Interface

integer function c_test( m ) BIND (C, NAME="Test")

        use iso_c_binding

        integer :: m

end function

end interface


而cublas官方提供了interface来给fortran调用c函数,但是interface被定义在c文件中,例如fortran.c。如下:

typedef size_t devptr_t;


#if defined(__cplusplus)

extern "C" {

#endif /* __cplusplus */

int CUBLAS_INIT (void);

int CUBLAS_SHUTDOWN (void);

int CUBLAS_ALLOC (const int *n, const int *elemSize, devptr_t *devicePtr);

int CUBLAS_FREE (const devptr_t *devicePtr);

....

....

....

#if defined(__cplusplus)

}

#endif /* __cplusplus */


我在网上没有找到相关的知识,我想问的是

(1)是否从fortran调用c函数的时候,interface可以使用iso_c_binding的方法定义在 .f90文件中,也可以被定义在 .c文件中?

(2)像cublas这样把interface定义在 .c文件中,在vs2013中该如何实现呢,( Linux下生成.o文件,混合编译很简单,但是boss说必须要用windows)。我比较困惑该如何进行下去,您能告诉我该用什么方法么, 是vs下混合编译么


Thanks in advance


祝您工作顺利!



分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-11-23 06:12

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表