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

时间:2016-09-18 19:56:47

标签: linux windows visual-studio cuda nvidia

我协助教授为并行编程课程建立实验室。该过程如下:

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

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

我已经阅读了这篇文章 - Creating CUDA Projects for Linux - 其中详细介绍了如何让NVIDIA的示例项目正常运行,但我不确定我是否可以在适当的情况下使其适应。< / p>

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

  • 本课程中很多学生都熟悉

  • 它能很好地处理项目架构

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

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

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

我研究了这个并且我遇到过这些问题,但他们并不完全适用于这个具体案例:

How to write programs in C# .NET, to run them on Linux/Wine/Mono?

How should I develop CUDA on OSX and the deploy test on Linux

1 个答案:

答案 0 :(得分:3)

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

另一种方法是让您的学生使用X-forwarding SSH客户端(如Mobaxterm)或其他远程解决方案(如TightVNC从Windows框(VM))到GPU框中的GPU是。这两种方法之间存在一些细微差别。我相信X转发的SSH客户端方法将具有更轻的网络负载,并且实际上不需要在目标上运行X桌面,而TightVNC是实际的远程桌面解决方案。因此,对于这两种方法,用户体验可能会有所不同,但是如果所讨论的所有计算机(Windows VM,Linux GPU盒)之间都有100Mb或更快的网络连接,并且您只运行少数客户端我认为这可能并不重要。

如果您在每个学生/客户的Linux机器上建立单独的用户帐户,则任何一种解决方案都可能效果最佳。

由于学生将共享GPU资源,如果多名学生试图同时运行项目,可能会出现问题,但对于入门级编程工作可能不是问题。

一旦他们建立了联系,学生就可以启动nsight来运行基于linux的GUI IDE(nsight Eclipse Edition)来构建CUDA项目,并运行/ debug / profile。