当前位置:数据分析 > vs2010中安装fortran环境变量_Visual Studio 2010中CUDA 4.0的安装与配置 - CSDN博客

vs2010中安装fortran环境变量_Visual Studio 2010中CUDA 4.0的安装与配置 - CSDN博客

  • 发布:2023-09-30 23:01

转载自博客http://www.sychzs.cn/s/blog_6798850f0101daea.html

已知: ?主程序全部C++源代码?????????静态库全部Fortran源代码 工具:?编译器:MS Visual?C++ 2010(x86)?????? ?编译器:Intel Visual Fortran 2011(x86),即 IVF 12 ?????????IDE:Microsoft Visual Studio 2010

问:C++代码中需要调用Fortran子程序。由于 Visual Studio 不再包含 Fortran 编译器,因此无法进行混合编译。唯一的方法是先将Fortran代码编译成静态库,然后从C++代码中调用它。问题是Fortran子例程可以成功编译成静态库(.lib文件),但无法在C++项目中调用。总是提示“无法解析的外部符号_XXX,在函数_XX中引用”。

?

?????第一次遇到这个问题的时候,我在百度和谷歌上搜索了一下,发现唯一的参考信息来自于

?????http://www.sychzs.cn/bbstcon?board=VS&reid=1292155137 ?????但是,遗憾的是,按照这位华人兄弟的提示,还是不行,仍然提示“Unable Resolved external symbol _XXX, which is referenced in function _XX”。于是我继续Google,找到了国外专家的答案,读了一下,发现OK,问题解决了,总结如下:

???1. Fortran 子程序的声明 Subroutine?ffun 一般声明格式如下

???????????????extern "C" void?__stdcall?FFUN(int& i);???//FFUN 应该大写

??????然后按照FFUN(a)来使用,这也是彭国伦的Fortran95编程书上讲的方法。该操作在VC6.0中可以正常使用,但在VS2010中则不行。在VS2010中如果声明为__stdcall,FFUN会被编译成?FFUN@4?,在Fortran中也会被编译成FFUN,所以还是提示“无法解析的外部符号FFUN@4,该符号在函数_XX中被引用” 》,如果声明为__cdecl或者直接省略这部分声明,则不存在这个问题。因此,在VS2010中,Fortran子程序不能再声明为__stdcall,而是声明为

?????????????????? extern "C" void FFUN(int *a);

??????2.为C和Fortran项目指定不同的运行库 - 这些必须一致

????????????您可以将两个项目中的运行时库设置更改为“多线程”(不是多线程 DLL),它应该可以执行您想要的操作。

是什么意思?意思是?编译Fortran静态库时,需要将Project->Properties->c/c++->Code Generation->Runtime Library设置为多线程调试(在Debug下),而不是多线程调试DLL。同时,调用Fortran静态库的C++项目中也必须进行相同的设置。

?????????3.libifcoremt.lib 在 C 项目中明确列为附加依赖项 - 删除 ?????????msvcrt.lib 在 C 项目中列为“忽略” - 删除

????????????编译时,有时会出现“无法打开文件ifconsol.lib?”之类的情况。在这种情况下,您需要添加库路径和额外的依赖项来解决问题。有时会提示库冲突。华哥的解决办法是从项目中排除默认库。不过,如果设置了“多线程调试的运行时库”,基本上就不会出现这个问题了,而且老外明确指出要删除被忽略的库(msvcrt.lib在C项目中列为“忽略”-删除)。

??????这个问题基本解决了。注:我也是通过尝试和错误来学习的。我只是记录下来作为我自己的笔记。希望大神们不要批评我。

?

老外论坛参考:http://www.sychzs.cn/en-us/forums/topic/275962

Windows 10下Fortran的MPI配置,VS2010+IVF作为编译器

这是我第一次在CSDN上写东西。我很高兴认识大家。之前花了很多时间在win10下配置fortran MPI环境。我尝试了mpich和msmpi的各种方法但报错。我尝试了各种版本,但问题仍然没有解决。后来FQ找到了办法。很简单,我来给大家分享一下。

首先一定要注意版本问题,否则可能会出现版本不兼容的情况。我正在使用 VS2010 和 IVF2011。我不知道为什么我无法安装mpich(我问了老大,原因好像是因为我下载的版本太旧)它不支持win10,但我的vs只有2010所以我没有选择) ,所以我必须下载msmpi。 MPI官网下载的版本是HPC Pack 2008 R2。下载地址在这里 https://www.sychzs.cn/zh-cn/download/details.aspx?id=14737 下载后直接安装即可。建议遵循默认设置。

下面介绍VS中的设置

新建一个空项目,如下。随意创建一个新的源文件。右键单击创建的项目,点击“属性”,选择左侧的调试,在相应的界面中进行如下更改。 4.1 修改命令为:mpiexec.exe; 4.2 将命令参数修改为:-n 4 $(TargetPath)。 (熟悉mpi的朋友一定会注意到,这里的-n 4表示使用4个核心,如果你的电脑有更多核心,想要投入使用,这里的设置需要修改)选择左侧General下的Linker ,将Additional Library Directorys更改为:$(MSMPI_LIB32) 在Linker下选择Input,将Additional Dependence修改为:msmpi.lib msmpifec.lib。您还需要将 MSMPI 模块定义添加到您的项目中,选择“在源文件中添加现有项目”,找到 mpi.f90 并添加它。由于我的按照默认安装路径是在C盘,所以我的路径是“C:\Program Files\Microsoft HPC Pack 2008 R2\Inc”,选择mpi.f90,添加即可。

大功告成,可以开始愉快的使用啦!

该版本无法在VS2010中运行调试。对于我这样的新手来说还不够(其实我也不知道这个debug是做什么的),但是反正可以运行!只需测试 Hello world 部分即可。

程序测试乐趣

写(*,*)“世界你好!”

节目结束

直接开始执行(无需调试),结果如下。需要注意的是,其他mpi头文件会在下载的msmpi文件夹中。调用的时候最好把它们复制到项目文件夹下,然后添加到项目中,防止被发现。 。

就是这样。如有错误,欢迎大家批评指正★,°:.☆( ̄▽ ̄)/$:.°★。

已于2020年4月16日修正

由于上面mpi的下载链接已经过期,新版本的msmpi安装包总是存在各种bug。经过多方查找,终于找到了合适的安装包。链接如下。链接:https://www.sychzs.cn/s/1hjdjHPXC5urNW1CgdQhKpg 提取码:mejl 谢谢大家!

安装环境:

Win7 64位系统,Geforce GT 430显卡

安装前提条件:

??????Visual Studio 2010

??????视觉辅助 X

安装步骤:

1。 Nvidia显卡驱动,安装版本275.33。这是驱动程序的最新版本。为了避免首次安装时出现错误,最好安装较新版本的驱动程序。

2、Cuda Toolkit 4.0安装,CUDA 4.0的新功能可以在其Release Notes中找到,其中包括本文要介绍的Thrust库。

3、CUDA 工具 SDK?4.0?安装时,默认安装路径可能是

C:\ProgramData\NVIDIA Corporation\NVIDIA GPUComg SDK 4.0,将此路径记住为 SDK_PATH。

4,并行Nsight 2.0?安装后,该工具可以将GPU通用计算集成到Microsoft Visual Studio中,并且可以使用CUDA C、OpenCL、DirectCompute、Direct3D和OpenGL来调试和分析应用程序。

现在可以使用VS打开CUDA SDK示例了。在此之前,可以先生成两个工具库。

a。使用VS2010打开SDK_PATH\c\common\cutil vs2010.sln,VS2010,选择“Build|Batch Build...”,“全选”,生成配置所需的所有lib。如果遇到“无法打开源文件...”错误,请删除该文件夹的只读属性。

用途:生成每个配置所需的cutilxx[D].lib XX:32 /64 [D]调试模式??

lib存放位置:SDK_PATH\c\common\lib\(win32|X64)

b.???方法同上,打开SDK_PATH\share\ shrUtils_vs2010.sln?选择“构建|批量构建...”

??????目的:生成各个配置所需的shrUtilxx.lib XX:32 /64 [D]调试模式??

lib存放位置:SDK_PATH\share\lib\(Win32|x64)

注意:此工程编译时会提示找不到两个.cpp。只需将它们从项目中删除即可。因为同名的.h文件中已经有完整的代码了。

?

测试示例:VS2010?打开SDK示例:deviceQuery、matrixMul以及各种配置都可以编译执行成功。 CUDA的基本配置已经完成。

?

创建您自己的 CUDA 项目

1。创建一个Win32控制台应用程序HelloWorldCuda,选择空项目,然后添加源文件HelloWorldCuda.cpp,并将名称更改为www.sychzs.cn。

2、选择项目| Build Customizations… 菜单并在对话框中选择 CUDA 4.0。这将添加对 CUDA C/C++ 文件 (*.cu) 的支持

3、??选择www.sychzs.cn文件,右键选择Property,打开属性对话框。在常规属性页面下,将项目类型更改为“CUDA C/C++”

4。选择HelloWorldCuda项目,右键选择Property,打开属性对话框,选择“Linker|General”属性页,在“Additional Libraries Directories”下添加“$(CUDA_PATH_V4_0)\lib\$(Platform”); ”

注:CUDA C/C++已经出现在属性页中

5、??打开“Linker|Input”属性页,添加“cudart.lib;”在“其他依赖项”中

6,?向www.sychzs.cn添加一些代码。 …………

测试程序:

#包括

?

bool InitCUDA()

{

???int 计数;

???cudaGetDeviceCount(&count);

???if(count == 0)

????{

?????????fprintf(stderr, "没有设备。\n");

??????返回 false;

???}

???int i;

???for(i = 0; i < 计数; i++)

????{

??????cudaDeviceProp 道具;

??????if(cudaGetDeviceProperties(&prop, i) == cudaSuccess)

???????{

????????????if(prop.major >= 1)

????????????{

???????????????打破;

????????????}

?????????}

???}

???if(i == count)

????{

??????fprintf(stderr, "没有支持 CUDA 1.x 的设备。\n");

??????返回 false;

???}

???cudaSetDevice(i);

???返回真;

}

int main()

{

???if(!InitCUDA())

????{

??????返回0;

???}

?????printf("HelloWorld,CUDA已初始化。\n");

???返回0;

}

?

使用?Ctrl+F5?运行,通过nvcc编译成功,并输出结果。 "C:\Program Files\NVIDIA GPU 计算工具包\CUDA\v4.0\bin\nvcc.exe" -gencode=arch=compute_10,code=\"sm_10,compute_10\" --use-local-env --cl -2010 版 -ccbin

CUDA C/C++ 关键字和函数突出显示:

在上面的www.sychzs.cn文件中,我发现CUDA C/C++的关键字__global__没有突出显示,并且有下划线的曲线。接下来,执行CUDA C/C++关键字和函数的语法高亮,并配置Visual AssistX?函数高亮、代码提示等功能。

以下是代码高亮的设置。共有三种设置

1。 ??????.cu 文件中 C/C++ 关键字的突出显示

此设置允许VS2010在编辑.cu文件时突出显示.cu文件中的C/C++语法。

设置方法:在VS2010的菜单中,点击:“工具|选项...|文本编辑器|文件扩展名”。在此界面中:在“编辑器”下拉框中选择“Microsoft Visual C++”,在“扩展名”中输入.cu?在文本框中单击“添加”按钮?,重复添加 .cuh? 的工作。类型为 vc++,然后单击“确定”按钮。 ?关闭所有.cu 文件并再次打开它们。 .cu 文件的 C++ 关键字将突出显示。如果这不起作用,请重新启动 VS2010。然而,CUDA关键字仍然是黑色的。下一步是突出显示 CUDA 键。

2.??????CUDA关键字高亮

为了突出显示CUDA关键字如__device__、dim3等文本,需要执行以下步骤:

复制SDK_PATH\C\doc\syntax_highlighting\usertype.dat?到 X:\Program Files (X86)\Microsoft Visual Studio 10.0\Common7\IDE\?目录??

这里?X:是安装VS2010的盘符,是win7 64位下的路径。

注意:win7 64位系统请勿复制到该目录。复制到这里不会突出显示 CUDA 关键字:

X:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\ (如果你的win7是32位的,可能就是上面的目录,应该突出显示。这是win7 64位和32位的)位.差异)

再次强调:SDK_PATH要替换成你安装SDK的实际路径。不要直接使用该字符串。

VS2010需要重新启动。重新启动后,打开.cu 文件,CUDA 关键字应变为蓝色。

?

3。 CUDA?函数高亮,以及CUDA函数输入代码提示?要实现这个功能,需要使用VAssistX。 ?首先安装支持VS2010的Visual AssistX,?可以安装在CUDA之前还是之后?需要两个步骤才能实现所需的功能:

a)?让Visual AssistX支持CUDA函数高亮和代码完成。在VS2010菜单中,点击:“VAssistX->视觉辅助”,在下拉框中选择“其他包含文件”,然后在下面的输入框中创建并添加三个路径,点击确定。这三个路径如下:

?SDK_PATH\c\common\inc ???????SDK_PATH\shared\inc ???????X:\Program Files\NVIDIA GPU 计算工具包\CUDA\v4.0\include

这里的SDK_PATH要替换成你安装的SDK路径。 X:是你的CUDA工具包安装盘符。

这三个目录下的.h文件中定义的VAssistX函数和类型将帮助我们在编辑文件时高亮和补全代码。如果少包含一个路径,则该目录下.h定义的函数和类型将不会高亮提示。

?

b) 让Visual AssistX支持.cu文件,这意味着Visual AssistX可以帮助我们实现.cu文件高亮和代码补全功能。您需要编辑注册表。首先关闭VS2010,点击开始菜单输入regedit打开注册表,找到如下位置:HKEY_CURRENT_USER\Software\Whole Tomato\Visual Assist X\VANet10。找到右侧的ExtSource项目,右键选择修改,在原文后添加如下文字:.cu;.cuh;?确认后,关闭注册表,重新打开vs2010。 Visual AssistX 开始支持 .cu 和 .cuh 文件的语法。亮起,代码完成。此时.cu文件的CUDA功能就突出显示了。使用函数名符号会自动提示函数全名、参数类型等信息。

以上安装完成后,开发程序应该没问题了,但是你会发现以下问题:

1。 VS2010显示.cu文件时,很多CUDA函数下面都有波浪线

2.?使用VS2010的“转到定义”功能在.cu文件中找不到CUDA函数的定义。

出现这两个问题的原因是VS2010不识别这些函数,也没有指定它们包含在哪个头文件中,解决办法其实是一样的。添加 CUDA 吗?以及CUDA SDK头文件路径到VS2010的VC++目录。

感谢网络上的所有信息,感谢前人走过的路。

相关文章

最新资讯

热门推荐