本地与远程开发

计算科学 并行计算 图书馆 测试 编译
2021-12-17 10:18:36

我知道在其他 StackExchange 站点上也有人问过类似的问题,但我认为计算科学的开发可能会因为常见的计算环境而有所不同。由于时间或内存限制(或者我正在为英特尔协处理器开发),我经常无法在本地机器上运行合理的测试。我也无法在本地机器上真正测试分布式并行性,因此我登录到远程集群并在那里运行我的软件。

本地开发很好,因为我通常在自己的机器上拥有 root 权限,并且可以安装很好的工具,如 valgrind、gdb、libclang(用于源代码完成)、ranger 等。但是,我的计算机可能具有与远程计算机上可用的编译器和库版本不同的编译器和库版本(这是共享的,我没有权限)。

远程开发可确保编译器和库版本相同,并且我可以编辑、编译和运行,而无需以某种方式同步我的更改。我可以轻松地与 git 同步,但是为了修复我忘记的分号而提交、推送然后拉取可能会很痛苦。

理想情况下,我会在远程机器上拥有我的所有工具,但是如果没有权限,当它们有多个依赖项并且我不能使用没有 root 的包管理器时,安装某些工具可能真的很烦人。

使用我没有权限的远程计算机进行开发的最佳方法是什么?

2个回答

让你的远程主机安装你需要的东西。我们一直为我工作的人这样做。通常他们可以帮助你。此外,可以在您的机器上进行一些开发,然后将您的结果移植到远程机器上。

我想在这里添加一些尚未提及的可能有用的东西(评论太长了),因为你说与 git 同步很痛苦。

有工具sshfs(我相信它的 osx 等价物是osxfuse)。如果您的远程机器允许 ssh 连接,sshfs 将能够通过 ssh 在本地挂载远程文件系统。如果正如我认为您所说的那样,您还不能挂载远程目录,这很有用。因此通常你会这样做:

mkdir remote-sandbox
sshfs ssh://user@remote:~/sandbox remote-sandbox
cd remote-sandbox

然后直接编辑远程沙箱中的文件。这将使您不必使用 git 或 rsync 或 scp 同步文件,或者您有什么。