fortran-VS2013+Intel Fortran+Cublas

问题描述

VS2013+Intel Fortran+Cublas

您好,在下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

祝您工作顺利!

时间: 2024-08-19 04:34:42

fortran-VS2013+Intel Fortran+Cublas的相关文章

大规模问题-Intel Fortran跑程序的时候出现access violation错误。

问题描述 Intel Fortran跑程序的时候出现access violation错误. 小弟用Intel Visual Fortran运行一个三维的油藏数值模拟程序,小规模没有问题,但是当规模很大(例如跑200万的网格点)时,就会出现access violation错误.小弟用断点调试,在程序运行终止的地方随便放了一条write语句,结果就能跑了.小弟实在是想不明白了,放到网上请教各位看官有没有碰到类似问题的.乞求回答.小弟运行环境个人台式机,cpu是Intel i5 64位的,内存4G,I

英特尔至强处理器E5-2600 v2现代数据中心的核心

全世界的 IT 企业正在努力实现数据中心的虚拟化和自动化,希望藉此帮助他们的业务实现更高的价值和降低成本,以更快和更高效的方式交付新的数据驱动型服务.基于英特尔® 至强 处理器的服务器为实现此创新奠定了基础.这些服务器在当前虚拟化中心和云环境中的所有服务器中占绝大部分的比例,而且能够为大多数具备最高性能的工作站提供支持. 性能提升多达 35% 英特尔至强处理器 E5-2600 v2 产品系列相比前代在内核数量和高速缓存容量上都增加了 50%,同时支持速度更快的内存并专为虚拟化额外提供了硬件增强特

数据中心与私有云解决方案

就在几年前,大部分 IT 解决方案对客户来说还是无形的东西.它们隐藏在数据中心中,在幕后提供着工具和信息.而在今天,随着 IT 的愈加流行,客户能更清晰地看到它们所带来的影响.销售.营销.社交网络与客户支持全部都在网上进行.所有这些变化都对 IT 基础设施的速度.功能和可靠性产生了影响,进而在几乎所有的层面上直接改变了客户的体验,最终决定了盈亏.增长或衰退.成功或失败.总之,IT 已经不再仅仅是业务的辅助角色.IT 本身正在成为一种业务.IT 企业相比以往正起到越来越重要的作用,人们对 IT 的

fortran-关于FORTRAN调用matlab出现问题,无从下手,跪求大神指点!

问题描述 关于FORTRAN调用matlab出现问题,无从下手,跪求大神指点! 首先说明,我用的是VS2008平台,intel fortran安装在该平台下,matlab为2010a版本 .调用了matlab中的libeng.lib libmat.lib libmex.lib libmx.lib库文件.程序可以编译,但是运行时候出错.代码 !!matlab函数调用模块 !!!!! module matlab implicit none integer ep !指针,用于指向打开的matlab i

宝德PR1700G2 1U服务器评测

服务器 宝德PR1700G2服务器是7系列的一员,可胜任WEB.Email.FTP.File.高速缓存.消息.多媒体.代理主机.搜索引擎.安全性.虚拟私人网路(VPN).IP语音(VOIP).网络托管等应用领域,也可以胜任多数据存储.数据库应用.高性能计算.计算机集群等领域,适用于数据中心建设.电子政务.企业信息化建设.游戏网站.宽带网络建设.校园主干网建设等方面. 宝德PR1700G2服务器采用了Intel SR1400SYS机箱,外观尺寸为43m x 430m x 672mm,适合于高密度部

双核时代考验 Pentium D服务器应用评测

服务器 NetBurst架构自从2000年发布以来,至今已经跨入了第7个年头.这些年间,采用了这个架构的处理器在不断的变化,核心经历了Willamette.Northwood.Prescott.Cedar Mill,处理器制程从最早的0.18微米到65纳米,主频从最初的1.3GHz到现在的3.8GHz,处理器缓存.前端总线以及诸如HT技术. EM64T.EIST技术等等被加入到了基于NetBurst架构的Pentium 4系列处理器中. 从去年开始,受到制程问题困扰的Intel放慢了提升处理器主

ci-CI框架中分页关于参数丢失的问题

问题描述 CI框架中分页关于参数丢失的问题 点击下一页的时候原本的查询结果中的参数的限制都没有了,点击下一个又变成查询所有的了 请问怎么解决呢?代码如下:public function message_search(){ $conditions= ""message_record.id > 0""; //任务状态查询 if(!empty($_REQUEST['message_type'])){ $message=$_REQUEST['message_type'

《操作系统真象还原》——1.2 我们需要哪些编译器

1.2 我们需要哪些编译器 C语言虽然不是为设计大型软件而生的,但其却被用来开发大型软件. 现代操作系统基本上是用C语言再结合汇编语言开发的,所以C语言编译器,我们选择的是gcc.而汇编语言编译器,我们选择的是nasm.为什么选择这两个,首先因为它们都是开源软件,其次其强大的功能不亚于同类的商业软件. 1.2.1 世界顶级编译器GCC 秉着简单至上的原则,我们在开发过程中,能用简单的工具就不用复杂的.所以我们的系统,绝大部分是C语言实现的,而且并不需要多么高深的算法及数据结构功底. 另外我们在L

java的性能

"本附录由Joe Sharp投稿,并获得他的同意在这儿转载.请联系SharpJoe@aol.com" Java语言特别强调准确性,但可靠的行为要以性能作为代价.这一特点反映在自动收集垃圾.严格的运行期检查.完整的字节码检查以及保守的运行期同步等等方面.对一个解释型的虚拟机来说,由于目前有大量平台可供挑选,所以进一步阻碍了性能的发挥. "先做完它,再逐步完善.幸好需要改进的地方通常不会太多."(Steve McConnell的<About performance