跳过导航

VS代码

箕斗侧边导航

谨慎! ! ! !不要使用VS代码的远程SSH连接到帆船!!

Do NOT run VS代码 Remote SSH to connect to schooner!!!

这样做会在登录节点上创建一个VS代码 Server任务,这会快速消耗登录节点上的大量RAM。这可能会导致登录节点崩溃,从而阻止所有1000多个OSCER用户登录!!如果您在遵循以下说明方面有困难,请随时加入OSCER每周缩放帮助会议,

在Schooner上运行VS代码而不破坏登录节点

如果你在这里,你知道VS代码是多么有用和良好的支持作为一个IDE(集成开发环境)。本指南是关于如何通过本地PC或笔记本电脑上的VS code应用程序在OSCER上正确调试代码(特别是python脚本)的指导。如果你还没有这样做,请阅读上面的警告。

1. 下载和安装VS代码

***从VS代码 1.86.0版本开始,微软现在不再支持包含所有OSCER计算节点的glibc<2.28的旧操作系统。在我们将整个超级计算机升级到更新的操作系统之前,您唯一的选择是使用VS代码桌面和CLI版本1.85.2。即:下载VS代码桌面1.85.2,相应在步骤5中下载VS代码 CLI版本1.85.2。链接为每个操作系统是基于微软官方VS代码指令如何下载以前的版本:- Windows: https://update.code.visualstudio.com/1.85.2/win32-x64-archive/stable - Linux: + Debian / Ubuntu: https://update.code.visualstudio.com/1.85.2/linux-deb-x64/stable + RHEL / Fedora / SUSE: https://update.code.visualstudio.com/1.85.2/linux-rpm-x64/stable MacOS: https://update.code.visualstudio.com/1.85.2/darwin-universal/stable

一旦你下载并提取了VS代码桌面1.85.2包,我们建议这个版本“便携”,这意味着它将是一个独立的VS代码版本,从当前安装在你的PC/笔记本电脑(如果你有的话)。这很简单:如果你使用Windows或Linux,只需在提取的目录(code/code.exe可执行文件所在的位置)中创建一个名为data的目录,或者在Visual Studio code旁边创建一个名为code-portable-data的目录。应用程序,如果你使用的是MacOS。更多细节请访问:https://code.visualstudio.com/docs/editor/portable

另外,请记住删除~/。Vscode和~/。vcode -server目录,每当你改变你的VS代码 CLI版本,如故障排除中提到的。

visual studio code download page

我们建议下载压缩包(Windows和Mac为.zip, Linux为.tar.gz)。这样,你在下载后所需要做的就是提取压缩包并运行VS代码可执行文件。您不需要安装任何应用程序,也不需要管理员/根权限。你不需要在以后的VS代码运行中做这个步骤,只有这一次。

2. 安装远程隧道扩展VS代码

在您的本地PC/笔记本电脑上启动VS代码应用程序。如果您按照我们的建议下载并解压VS代码压缩包,只需双击“Code.exe”文件即可在Windows中运行VS代码。对于Ubuntu,双击“code”可执行文件来运行它。对于MacOS,双击“Visual Studio Code”。App”来运行它。

visual studio code executable

转到VS代码用户界面的“Extensions”选项卡,搜索“Remote - Tunnels”并安装它。

installing remote tunnel extension for visual studio code

不会必须在以后的VS代码运行中执行此步骤,只是第一次。

3. 创建一个Github帐户

如果你没有Github账户,点击这里注册一个。VS代码的远程隧道扩展需要一个Github帐户才能工作。您需要输入与此Github帐户关联的电子邮件地址,指定强密码,然后按照屏幕上的指示操作。

git hub registration

不会必须在以后的VS代码运行中执行此步骤,只是第一次。

4. 正在登录Schooner

对于Windows用户,请按照MobaXterm在Windows上访问OSCER的说明中的步骤1、2和3进行操作。Linux和MacOS用户:打开终端,输入ssh schooner.oscer.ou.edu,输入用户名和密码即可登录。

Login to the super computer

5. 获取VS代码 CLI(命令行界面)

***从VS代码 1.86.0版本开始,微软现在不再支持包含所有OSCER计算节点的glibc<2.28的旧操作系统。在我们将整个超级计算机升级到更新的操作系统之前,您唯一的选择是坚持使用最新兼容的VS代码 CLI版本,即1.85.2,并通过以下命令下载:curl -Lk ‘https://update.code.visualstudio.com/1.85.2/cli-alpine-x64/stable’——output vscode_cli.tar.gz

然后解压缩:tar -xf vscode_cli.tar.gz rm vscode_cli.tar.gz在当前目录下应该有一个名为code的可执行文件。例子:

Example listing home directory with VS代码 executable

不会必须在以后的VS代码运行中执行此步骤,只是第一次。

6. 创建VS代码服务器批处理脚本

***为了确保VS代码会话创建时没有奇怪的错误,最好删除~/。在调用vscode服务器批处理脚本中的可执行代码之前。我已经更新了示例批处理脚本以反映此更改。唯一的缺点是,每次在超级计算机上启动VS code会话时,你都必须去github并使用8个字符的代码授权会话。

接下来,你将构建一个批处理脚本,在你最喜欢的分区中加载你最喜欢的python环境,并启动一个VS代码服务器会话。在本指南中,我们将创建一个名为“test_vcode .sbatch”的批处理脚本。输入:nano test_vcode .sbatch

下面是我的test_vscode的一个例子。sbatch批处理脚本提交到vscode分区,请求1个CPU, 2GB内存,1小时运行时间限制,加载Python 3.10.8模块。这假设您下载的代码CLI版本为1.85.2或以下:/bin/bash # #SBATCH——partition=vscode #SBATCH——output=vscode_%J_stdout.txt #SBATCH——error=vscode_%J_stderr.txt #SBATCH——chdir=/home/yourusername #SBATCH——ntasks=1 #SBATCH——mem=2G #SBATCH——time=1:00:00 module load Python/3.10.8-GCCcore-12.2.0 #加载你喜欢的模块#如果需要,在这里激活Python虚拟环境# Remove ~/vscode以确保会话可以无错误地启动#不需要删除~/。vcode -server或~/。vcode -r,所以你不必重新安装vscode扩展rm -rf ~/。需要重定向/tmp到你的scratch,以避免在新的EL9超级计算机上vscode失败导出TMPDIR=/scratch/$USER/tmp mkdir -p $TMPDIR export TUNNELNAME=$USER-$(主机名-s) echo隧道名称:$TUNNELNAME $HOME/code隧道——accept-server-许可证-terms——Name =$TUNNELNAME

(将您的用户名修改为您的OSCER用户名)

在这个例子中,我将我的VS代码作业提交到一个名为vscode的分区,该分区专门用于VS代码。在实际场景中,你很可能想要在你计划提交最终“生产级”代码的同一个分区上运行VS代码,比如你的组皇冠体育app的分区(例如ai2es组中用户的ai2es分区)。使用普通分区是可以的,但不建议使用,因为您可能会遇到很长的等待时间(可能长达2周的等待时间)。你不需要在以后的VS代码运行中做这个步骤,只有这一次。

 

7. 提交vscode服务器批处理作业

要提交批处理脚本,输入:sbatch your_vscode_batch_script_file_name,除了将your_vscode_batch_script_file_name替换为VS代码批处理脚本文件的名称。例如:sbatch test_vscode。您应该得到如下终端输出:提交的批处理作业15988858这个15988858号是vscode服务器批处理脚本的作业ID。一旦提交,此作业将下载并启动运行脚本的计算节点上的VS代码 Server,并创建一个“隧道”,从计算节点到Microsoft Visual Studio域global.rel.tunnels.api.visualstudio.com的连接。有关VS代码远程隧道的更多细节,请参阅此处。

 

8. 监控VS代码服务器批处理作业输出

要查看提交的作业是正在运行还是仍然挂起,可以输入:watch queue——job job_ID,其中job_ID是提交作业的ID号。例如:watch queue——job 15988858

monitoring the status of a submitted job

一旦你看到它的状态ST变成R,就意味着它在运行。按Ctrl+C退出watch命令。默认情况下,提交的VS代码作业的输出是一个命名方案为vscode_jobID_stdout.txt的文件。例如,我的文件是vscode_15988858_stdout.txt。如果在作业运行后没有立即显示,请给它一分钟。

visual studio code job output file

您可以通过输入tail -f job_output_file_name来“跟踪”所提交作业的slurm输出,只是将job_output_file_name替换为slurm批处理作业的标准输出文件名。大约一两分钟后,第一次运行该命令时,输出应该显示如下内容:要授予对服务器的访问权限,请登录到https://github.com/login/device,并使用代码xxxx-xxxx按照它所说的去做!您可能需要第一次登录到您的github帐户:

git hub sign in website

然后输入8位数字代码:

git hub enter 8 digit code

授权超级计算机:

git hub authorize super computer
github granted access to super computer

9. 监控隧道名称

在成功授予从github帐户访问超级计算机的权限之后,回头看看上面步骤(8)中所示的尾部输出。给它1-2分钟更新。当你看到类似这样的内容:在浏览器中打开这个链接https://vscode.dev/tunnel/thanghn90-c170这意味着VS代码服务器已经成功创建了一个名为thanghn90-c170的隧道。现在,您已经完成了OSCER。不需要浏览那个链接。您将在本地PC或笔记本电脑上使用VS代码完成所有工作。

10. 在VS代码上连接到授权隧道

如果你还没有在你的本地PC/笔记本电脑上启动VS代码应用程序,请这样做。然后按Ctrl+Shift+P调出命令面板,输入:Remote-Tunnels: Connect to Tunnel,选择它。

connect to a tunnel

第一次以这种方式运行VS CODE时,你需要允许VS CODE登录到你的github账户。

visual studio code git hub authorization pop up
visual studio code git hub authorization on browser
visual studio code git hub authorization extension

对于未来的VS代码会话,你不需要这样做,因为VS代码已经可以访问你的github帐户。完成后,选择您授予访问权限的隧道名称。在我的例子中,它是thanghn90-c170。

select your authorized tunnel

如果成功连接,您应该在VSCode的左下角看到一个带有隧道名称的图标。

icon of successfully connected tunnel

11. 编码与调试

浏览到您的代码并开始编码和/或调试

start coding

你可能需要在第一时间“相信”皇冠体育app。

trust yourself

您很可能需要为.py脚本指定一个python解释器,或为.ipybn笔记本指定一个“内核”。这是一样的。您可能还需要在VSCode服务器上再次安装Python和Jupyter扩展(即使您可能已经在本地PC的VSCode上安装了它们)。VS代码有大量的社区支持和讨论,本指南将无法涵盖。

12. 关闭和取消隧道注册

当你完成编码后,你必须关闭远程连接,点击左下角的连接图标,然后选择“关闭远程连接”。

close tunnel connection

之后,您必须通过转到Remote Explorer选项卡取消注册隧道,右键单击正在运行的隧道(在本例中为c170),选择“取消注册隧道”。

unregister a tunnel

否则,下次你想用批处理脚本再次启动隧道时,你会遇到这样的错误:错误不能创建隧道名称:thanghn90-c170原因:隧道名称已经在使用中

 

13. 正在取消VS代码服务器批处理作业

最后,你必须在OSCER上结束vscode服务器作业:scancel job_ID除了将job_ID替换为你的vscode服务器作业ID。例如:scancel 15988858

 

后续运行VS代码服务器批处理作业的注意事项

  • 从步骤(4)(登录到schooner)开始,跳过步骤(1)、(2)、(3)(下载VS代码、安装Remote Tunnels Extension、创建Github帐户)。
  • 跳过步骤(5)和(6)(VS代码 CLI安装和批处理脚本创建)。
  • 在步骤(8)中使用8位代码授权vscode服务器,并继续步骤(9)、(10)和(11)。
  • 完成后,不要忘记在步骤(12)中关闭并注销隧道,并在步骤(13)中取消作业。

故障排除

升级/降级VS代码 CLI后出现错误

如果你在主目录下升级/降级VS代码 CLI后遇到任何奇怪的问题,请输入:rm -rf ~/。这将删除~/。Vscode目录,允许您重新开始。这意味着您必须使用步骤8中描述的8个字符的代码重新验证隧道。

VS代码服务器作业超时

如果您的VS代码 Server批处理作业由于时间限制而被杀死,请执行步骤(12):关闭隧道连接并取消已关闭隧道的注册。然后重做步骤(7)到步骤(11),即重新提交VS代码 Server批作业,监控批作业输出,连接授权隧道,开始编码/调试。

由于X11转发错误,与R绘图失败

如果你想使用VS代码来运行R而不是Python,并且在绘制图形/图像时遇到X11转发错误,你需要关闭本地PC/笔记本电脑上的VS代码 GUI,在你的OSCER帐户上安装一些额外的R库,并在VS代码的jupyter会话中运行R代码。要做到这一点,请登录您在OSCER上的帐户(如果您还没有登录)。如果您通过conda (miniconda/anaconda)使用R,请根据需要加载conda环境。否则,首先需要加载R模块。例如,要加载R 4.2.1,输入:module load R/4.2.1-foss-2022a,然后输入:R在R控制台中,输入以下三条语句:Packages ('languageserver', repos='https://cran.r-project.org/')安装。IRkernel::installspec()这三个语句将安装R语言服务器和IRkernel,以便VS代码能够在jupyter会话中识别R语言。完成后,按Ctrl+D(或MacOS中的Command+D)退出R控制台。如果你的VS代码服务器批处理脚本不是为R设计的,请确保在其中加载R模块。例如,下面是我的批处理脚本的内容,用于使用R: #!/bin/bash # #SBATCH——partition=vscode #SBATCH——output=vscode_%J_stdout.txt #SBATCH——error=vscode_%J_stderr.txt #SBATCH——chdir=/home/yourusername #SBATCH——ntasks=1 #SBATCH——mem=4G #SBATCH——time=1:00:00 module load R/4.2.1-foss-2022a #在这里加载你喜欢的模块#如果需要,在这里激活python虚拟环境# Remove ~/vscode以确保会话可以无错误地启动#不需要删除~/。vcode -server或~/。vcode -r,所以你不必重新安装vscode扩展rm -rf ~/。vscode #需要重定向/ tmp你抓来避免vscode失败新EL9超级计算机出口TMPDIR = /划痕/ $ USER / tmp mkdir - p $ TMPDIR出口TUNNELNAME = $ USER - $(主机名- s)回声隧道名称:TUNNELNAME美元$ HOME /代码隧道——accept-server-license-terms名称= $ TUNNELNAME(修改yourusername作为欧安组织用户名)一旦你已经提交了一份VS代码服务器工作R,打开你的笔记本电脑/本地PC VS代码GUI,然后连接到远程隧道,打开你的工作目录。为了能够在没有X11转发错误的情况下显示R图,您需要通过VS code的Jupyter会话运行R代码。如果你还没有安装Jupyter扩展,在连接到远程隧道后,在VS代码扩展选项卡中搜索“Jupyter”,并安装它。

visua studio code jupiter extension

要打开一个新的Jupyter笔记本,请按Ctrl+Shift+P(或MacOS上的Command+Shift+P)打开命令面板,并键入:Create: new Jupyter notebook并选择它。

visual studio code jupiter new notebook

默认情况下,Jupyter笔记本将Python设置为其默认语言。点击它并将其更改为R。

visua studio code jupiter change language
visua studio code jupiter select R language

之后,你需要为你的Jupyter会话选择R内核(即R可执行文件,或“解释器”),通过点击右上角的选择内核图标,然后选择Jupyter内核选项,然后点击加载的R可执行文件。

visual studio code jupiter select kernel
visual studio code jupiter select jupiter kernel
visual studio code jupiter select R kernel

一旦你将R kernel设置为你的Jupyter会话,你就可以复制/粘贴你的R代码到一个Jupyter代码块并运行它。下面是一个用R代码在Jupyter笔记本中绘制的正弦波图示例。

visual studio code jupiter R plot example