Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Windows上的Visual Studio中编写CUDA并将其部署到Linux?_Linux_Windows_Visual Studio_Cuda_Nvidia - Fatal编程技术网

如何在Windows上的Visual Studio中编写CUDA并将其部署到Linux?

如何在Windows上的Visual Studio中编写CUDA并将其部署到Linux?,linux,windows,visual-studio,cuda,nvidia,Linux,Windows,Visual Studio,Cuda,Nvidia,我正在协助一位教授为一门并行编程课程建立一个实验室。过程如下: 学生登录到运行Windows 7的虚拟机。这台机器没有可用的GPU。它与Visual Studio 2013一起安装了CUDA工具包的7.5版。学生应该使用Visual Studio编写他们的CUDA程序/项目 为了测试/运行这些项目,学生可以远程访问相当高端的机器。我没有物理访问权限,但从命令行可以看出,它有四个NVIDIA Tesla M40。学生可以通过SSH远程访问此计算机。不过,问题是这台机器运行的是Linux(Ubunt

我正在协助一位教授为一门并行编程课程建立一个实验室。过程如下:

学生登录到运行Windows 7的虚拟机。这台机器没有可用的GPU。它与Visual Studio 2013一起安装了CUDA工具包的7.5版。学生应该使用Visual Studio编写他们的CUDA程序/项目

为了测试/运行这些项目,学生可以远程访问相当高端的机器。我没有物理访问权限,但从命令行可以看出,它有四个NVIDIA Tesla M40。学生可以通过SSH远程访问此计算机。不过,问题是这台机器运行的是Linux(Ubuntu 14.04.5)。我试图弄清楚如何将学生在Windows上的Visual Studio中编写的内容部署到带有GPU的Linux设备上。我在C、C++和CUDA方面的经验有限。我可以围绕make文件工作,但如果这是解决方案的一部分,请提供有关此主题的具体说明

我已经阅读了这篇文章,其中详细介绍了如何运行NVIDIA的示例项目,但我不确定是否可以将其应用于特定情况

我正在寻找一种简单的方法,让学生用CUDA写作业,但他们也需要能够运行他们写的东西。这位教授和我更喜欢Visual Studio的原因是:

  • 这是这个班许多学生都熟悉的

  • 它可以很好地处理项目架构

  • 它为学生提供了一个GUI,有助于缩短学习曲线(学生可以专注于CUDA,而不是终端、gcc等-这些东西无疑非常有用,但它们不是本课程的重点)

如果测试机运行的是Windows,那么学生就可以简单地将Visual Studio(在开发虚拟机上)中解决方案的调试或发布文件夹的内容传输到测试机,然后运行可执行文件。因为有两种不同的操作系统在起作用,我不认为它会像这样工作。我知道在Windows上编写代码和在Linux上部署不会那么容易,但我希望有一个可行的解决方案

重新配置设置,让学生直接在测试机上开发,或者创建一个用于开发的LinuxVM是可行的,但是如果可能的话应该避免。重新配置需要系统管理团队的参与,并且会延迟让学生编写代码的过程

我对此进行了研究,遇到了这些问题,但它们并不完全适用于这个具体案例:


这个问题的直接答案是,尝试采用VS解决方案/项目并在linux中重建它并不实际。这可能是可能的,但我不会把这个负担强加给试图学习GPU编程的学生

另一种方法是让您的学生使用X-forwarding SSH客户端,例如,或者使用远程处理解决方案,例如从windows box(VM)到GPU所在的linux box。这两种方法之间有一些细微的差别。我相信X-forwarded SSH客户机方法将具有更轻的网络负载,并且实际上不需要在目标机上运行X-desktop,而TightVNC是一个实际的远程桌面解决方案。因此,这两种方法的用户体验可能有所不同,但是,如果所有相关机器(windows虚拟机、linux GPU盒)之间都有100Mb或更快的网络连接,并且您一次只运行几个客户端,我认为这可能没什么关系

如果您在linux机器上为每个学生/客户机建立单独的用户帐户,那么这两种解决方案都可能工作得最好

由于学生将共享GPU资源,如果多个学生同时尝试运行项目,可能会有问题,但入门级编程工作可能不会有问题


一旦建立了连接,学生们就可以启动
nsight
来运行基于linux的GUI IDE(nsight Eclipse Edition)来构建CUDA项目,并运行/调试/配置它们。

真正简短的答案是,你不能从windows虚拟机上这样做,使用putty和ssh登录linux机器。在那里编写/编译/运行代码。如果你想要一个GUI IDE,让学生从他们的windows虚拟机中使用Mobaxterm这样的工具,通过X-forwarded SSH会话连接到Linux机器。然后在linux框中运行nsight eclipse edition,并将GUI转发到windows框。在这种情况下,每个学生都应该在linux box上有一个单独的帐户。@arbitrarystringofletters:更好的是,请将您的脚本解决方案和注释作为答案发布。我们一直在S.O.上看到这样的Qs,从未以任何有意义的方式得到解决。对你所做的事情的一步一步的描述将成为一个长期的代表点来源(很乐意投票给这个问题的多个合理答案)。祝大家好运。我同意,我宁愿自己学点东西。如果您发布您的答案,描述TightVNC的哪些功能以及您是如何使用它的,我和其他人可能会对此感兴趣。无论如何,我的答案可能不会比我(已经发布)的评论多出多少。我用CUDA进行了将近十年的Windows/Linux混合开发,对于你的学生将要创建的小项目,我发现最简单的解决方案是使用命令行工具和简单的makefile,在Windows上使用Cygwin获得gmake功能。没有Cmake,没有Eclipse,什么都没有。makefile所需的几个操作系统依赖项可以抽象并隔离在一个文件中。工作起来很有魅力,很容易与自动化脚本测试集成,等等。今天的学生能在这样一个“古老”的非GUI环境中工作吗?我不知道,你能帮我吗