如何在Windows上的Visual Studio中编写CUDA并将其部署到Linux?
我正在协助一位教授为一门并行编程课程建立一个实验室。过程如下: 学生登录到运行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的原因是:如何在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
- 这是这个班许多学生都熟悉的
- 它可以很好地处理项目架构
- 它为学生提供了一个GUI,有助于缩短学习曲线(学生可以专注于CUDA,而不是终端、gcc等-这些东西无疑非常有用,但它们不是本课程的重点)
这个问题的直接答案是,尝试采用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环境中工作吗?我不知道,你能帮我吗