可能是带宽饱和了,或者你有没有找到的GLD和GST,你目前的加速比怎么样?如果比较低可能是后者,比较高可能是前者。
swmore
@swmore
swmore 发布的帖子
-
RE: 菜鸟出来乍到 请教前辈 warning: node [1]: user's mpe task: tid= 0, pid= 1778,
@first_blood 可以考虑在论坛搜索一下SWLU,能打出详细的错误现场。
-
RE: 菜鸟出来乍到 请教前辈 warning: node [1]: user's mpe task: tid= 0, pid= 1778,
sig=11,也就是SIGSEGV,也就是段错误
-
在psn上使用VSCode Remote
2020.9.6: 现在VSCode没法直接下载Server了,应该是微软的服务端bug,更新解决方案
在本地的POSIX环境(例如ArchLinux,CentOS,Ubuntu等真正的Linux或者WSL,VBox等虚假的Linux或者MSYS2,Cygwin,git bash等POSIX on Windows方案)下直接使用如下脚本安装:if [ $# -lt 1 -o x$1 == x"-h" ]; then echo code-install-server.sh 用户名@主机 [-cpptools [cpptools文件名]] echo 例如: code-install-server.sh 用户名@主机 -cpptools echo 或: code-install-server.sh user@address -cpptools cpptools-linux.vsix echo 如果指定了-cpptools,则尝试同时安装C/C++插件 echo 如果对-cpptools指定了文件名,则使用对应文件,否则尝试从GitHub获取最新的C/C++插件 exit 1 fi #set -x function die { echo $1;exit 1; } TARGET=$1 if [ x$2 == x"-cpptools" ]; then CPPTOOLS=yes if [ -n "$3" ]; then CPPTOOLSFILE=$3 fi fi PORT=22 ARCH=x64 VERSION=$(code --version | awk '{if (NR==2) print}' || die "无法获取本地vscode版本") #如果bash环境不能访问code,请获取code的版本后直接把这行改成类似VERSION=e7d7e9a9348e6a8cc8c03f877d39cb72e5dfb1ff(code的commit id,可以在“帮助-关于”或者“Help-About”中查看) PATCHELF_REMOTE=/usr/sw-cluster/apps/Anaconda/anaconda3/bin/patchelf RPATH_REMOTE=/usr/sw-cluster/apps/lib/glibc-2.17/lib64/:/usr/sw-cluster/apps/Anaconda/anaconda3/lib/ INTERPRETER_REMOTE=/usr/sw-cluster/apps/lib/glibc-2.17/lib64/ld-linux-x86-64.so.2 SSH_SUCCESS=$(ssh -oPasswordAuthentication=no $TARGET echo success) if [ x$SSH_SUCCESS != x"success" ]; then echo "无法完成对$TARGET的免密连接,向远程服务器安装公钥免密登录吗?(y/n)" read yes if [ x$yes != x"y" ]; then die "此配置脚本要求免密登录" fi echo "安装公钥" ssh-copy-id $TARGET fi echo "下载vscode-server..." curl -L -C - "https://vscode.cdn.azure.cn/stable/$VERSION/vscode-server-linux-$ARCH.tar.gz" -o $VERSION-$ARCH.tar.gz || die "下载vscode-server失败" echo "Querying lastest cpptools release.." if [ x$CPPTOOLS == x"yes" -a -z $CPPTOOLSFILE ]; then echo "查询C/C++插件版本" CPPTOOLSVER=$(curl "https://github.com/microsoft/vscode-cpptools/releases/latest" | grep -o -E "tag/[^\"]+" | grep -o -E "[0-9.]+" || die "查询版本失败") echo "C/C++插件版本为$CPPTOOLSVER" echo "下载cpptools-$CPPTOOLSVER..." curl -L https://github.com/microsoft/vscode-cpptools/releases/download/$CPPTOOLSVER/cpptools-linux.vsix -o cpptools-linux-$CPPTOOLSVER.zip || die "无法下载C/C++插件" CPPTOOLSFILE=cpptools-linux-$CPPTOOLSVER.zip fi if [ -e $VERSION ]; then rm -rf $VERSION fi mkdir $VERSION echo "解压vscode-server..." tar zxf $VERSION-$ARCH.tar.gz --strip-components=1 -C $VERSION if [ x$CPPTOOLS == x"yes" ]; then echo "组合$CPPTOOLSFILE和server..." unzip -qo $CPPTOOLSFILE "extension/*" -d $VERSION/extensions/ mv $VERSION/extensions/extension $VERSION/extensions/ms-vscode.cpptools fi echo "检查远程服务器的目录" ssh $TARGET sh <<EOF if [ ! -e .vscode-server/bin ]; then echo "创建.vscode-server/bin" mkdir -p .vscode-server/bin else echo ".vscode-server/bin已存在" if [ -e .vscode-server/bin/$VERSION ]; then echo "移除莫名其妙存在的server" rm -rf .vscode-server/bin/$VERSION fi fi EOF echo "向远程服务器传输vscode-server..." tar czf - $VERSION --checkpoint=.100 | ssh $TARGET tar zxf - -C .vscode-server/bin/ ssh $TARGET sh <<EOF echo "修复Glibc依赖..." cd .vscode-server/bin/$VERSION set -x $PATCHELF_REMOTE --set-rpath $RPATH_REMOTE --set-interpreter $INTERPRETER_REMOTE ./extensions/ms-vscode.cpptools/LLVM/bin/clang-format $PATCHELF_REMOTE --set-rpath $RPATH_REMOTE --set-interpreter $INTERPRETER_REMOTE ./extensions/ms-vscode.cpptools/bin/cpptools $PATCHELF_REMOTE --set-rpath $RPATH_REMOTE --set-interpreter $INTERPRETER_REMOTE ./extensions/ms-vscode.cpptools/bin/cpptools-srv $PATCHELF_REMOTE --set-rpath $RPATH_REMOTE --set-interpreter $INTERPRETER_REMOTE ./node echo "修复执行权限..." chmod +x ./extensions/ms-vscode.cpptools/LLVM/bin/clang-format ./extensions/ms-vscode.cpptools/bin/cpptools ./extensions/ms-vscode.cpptools/bin/cpptools-srv set +x EOF
几个可能要避的雷包括:如果bash访问不到code(提示查询版本失败),处理方案见脚本注释。
如果出现连接不上的情况:- 肉身登录PSN,执行
killall node
(跟你共用账号的人的server可能被误杀),关闭本地vscode
,执行安装脚本,重启 - 如果问题持续可以尝试直接删掉服务器的
.vscode-server
文件夹(你和跟你共用账号的人的插件和数据将丢失),重复步骤1。 - 如果问题持续,重复步骤1,2
- 如果问题持续,改用EMACS
2020.3.17: 昨天找到的的glibc还是有问题,修改了路径
2020.3.17: 今天上午找到的库还不全,又修改了路径
2020.9.05: 现在clang-format也需要patch了
路径改来改去的原因是不同的人手底下的库不太一样,有人的LD_LIBRARY_PATH
里面缺足够新的libstdc++
有的缺libutil
。。。
VSCode Remote是最近很火的一个跨平台远程编辑工具,特别适合不喜欢用vim之类的东西的人。由于psn的glibc版本比较旧,所以直接使用vscode remote连接psn会失败,这里给出配置的步骤:
- 在插件栏装好Remote - SSH
- 在remote栏点+号新建一个链接,随便选一个ssh_config的位置,如果需要的话可以把私钥拷过去,不然就手动输密码。
- 尝试连接remote
因为glibc版本的原因,这个过程会失败。
4. 通过任意ssh客户端登陆psn,会发现已经有一个.vscode-server的目录:
5. .vscode-server下面会有一个bin,bin下面有个名字奇怪的文件夹,文件夹里有一个GLIBC版本不匹配的node:[swmore@psn009 ~]$ ls .vscode-server/ bin [swmore@psn009 ~]$ ls .vscode-server/bin/ 78a4c91400152c0f27ba4d363eb56d2835f9903a [swmore@psn009 ~]$ ls .vscode-server/bin/78a4c91400152c0f27ba4d363eb56d2835f9903a/ bin extensions LICENSE node node_modules out package.json product.json server.sh [swmore@psn009 ~]$ ldd .vscode-server/bin/78a4c91400152c0f27ba4d363eb56d2835f9903a/node .vscode-server/bin/78a4c91400152c0f27ba4d363eb56d2835f9903a/node: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.14' not found (required by .vscode-server/bin/78a4c91400152c0f27ba4d363eb56d2835f9903a/node) .vscode-server/bin/78a4c91400152c0f27ba4d363eb56d2835f9903a/node: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.18' not found (required by .vscode-server/bin/78a4c91400152c0f27ba4d363eb56d2835f9903a/node) .vscode-server/bin/78a4c91400152c0f27ba4d363eb56d2835f9903a/node: /usr/lib64/libstdc++.so.6: version `CXXABI_1.3.5' not found (required by .vscode-server/bin/78a4c91400152c0f27ba4d363eb56d2835f9903a/node) .vscode-server/bin/78a4c91400152c0f27ba4d363eb56d2835f9903a/node: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by .vscode-server/bin/78a4c91400152c0f27ba4d363eb56d2835f9903a/node) .vscode-server/bin/78a4c91400152c0f27ba4d363eb56d2835f9903a/node: /lib64/libc.so.6: version `GLIBC_2.17' not found (required by .vscode-server/bin/78a4c91400152c0f27ba4d363eb56d2835f9903a/node) .vscode-server/bin/78a4c91400152c0f27ba4d363eb56d2835f9903a/node: /lib64/libc.so.6: version `GLIBC_2.16' not found (required by .vscode-server/bin/78a4c91400152c0f27ba4d363eb56d2835f9903a/node) .vscode-server/bin/78a4c91400152c0f27ba4d363eb56d2835f9903a/node: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by .vscode-server/bin/78a4c91400152c0f27ba4d363eb56d2835f9903a/node) linux-vdso.so.1 => (0x00007fffc6fff000) libdl.so.2 => /lib64/libdl.so.2 (0x000000366fe00000) librt.so.1 => /lib64/librt.so.1 (0x0000003670600000) libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x0000003675e00000) libm.so.6 => /lib64/libm.so.6 (0x0000003670200000) libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x0000003673e00000) libpthread.so.0 => /lib64/libpthread.so.0 (0x000000366fa00000) libc.so.6 => /lib64/libc.so.6 (0x000000366f600000) /lib64/ld-linux-x86-64.so.2 (0x000000366ee00000) [swmore@psn009 ~]$
- 对node文件进行patch,这里用了我在psn上翻出来的新版本glibc和patchelf:
/usr/sw-cluster/apps/Anaconda/anaconda3/bin/patchelf --set-rpath /usr/sw-cluster/apps/lib/glibc-2.17/lib64/:/usr/sw-cluster/apps/Anaconda/anaconda3/lib/ --set-interpreter /usr/sw-cluster/apps/lib/glibc-2.17/lib64/ld-linux-x86-64.so.2 node
- 重新连接remote:
就可以没羞没臊地用vscode remote了。
如果想要在psn上使用C/C++插件,会遇到的两个问题是:
- C/C++插件需要联网下载相关的工具。
- C/C++插件也依赖高版本的glibc。
第一个问题的解决方案是通过VSIX安装,去 https://github.com/Microsoft/vscode-cpptools/releases 下载
cpptools-linux.vsix
在C/C++插件的VSIX版本,并上传到PSN上,然后连接VSCode Remote,在插件面板选择通过VSIX安装插件:
然后在弹出的路径选择中选择刚刚下载的vsix文件。安装完成后会爆插件服务器启动失败的问题,这时候应该去找
~/.vscode-server/extensions/ms-vscode.cpptools-<版本号>/bin
,然后使用patchelf来补一下cpptools
和cpptools-srv
。/usr/sw-cluster/apps/Anaconda/anaconda3/bin/patchelf --set-rpath /usr/sw-cluster/apps/lib/glibc-2.17/lib64/:/usr/sw-cluster/apps/Anaconda/anaconda3/lib/ --set-interpreter /usr/sw-cluster/apps/lib/glibc-2.17/lib64/ld-linux-x86-64.so.2 cpptools /usr/sw-cluster/apps/Anaconda/anaconda3/bin/patchelf --set-rpath /usr/sw-cluster/apps/lib/glibc-2.17/lib64/:/usr/sw-cluster/apps/Anaconda/anaconda3/lib/ --set-interpreter /usr/sw-cluster/apps/lib/glibc-2.17/lib64/ld-linux-x86-64.so.2 cpptools-srv /usr/sw-cluster/apps/Anaconda/anaconda3/bin/patchelf --set-rpath /usr/sw-cluster/apps/lib/glibc-2.17/lib64/:/usr/sw-cluster/apps/Anaconda/anaconda3/lib/ --set-interpreter /usr/sw-cluster/apps/lib/glibc-2.17/lib64/ld-linux-x86-64.so.2 ../LLVM/bin/clang-format
然后重新启动vscode即可远程使用C/C++插件,这对老年人编程还是相当友好的。
- 肉身登录PSN,执行
-
RE: fortran读取namelist以及MINVAL函数传参问题
我测试了一下,目测是不是因为前缀的问题,是因为这个f90库读namelist的时候必须按顺序读,不然读不进来。
要是想强行不按顺序读可以试试这样program main implicit none integer :: zzzz, ssss integer :: iost NAMELIST/ab/ ssss NAMELIST/abcd/ zzzz OPEN(UNIT=100, FILE='namelist', STATUS='OLD', IOSTAT=iost) REWIND(100)!还是要从头开始读 iost=1 do while (iost > 0) READ(100, nml=ab, IOSTAT = iost) !如果能读到那么iost=0,如果读到了末尾都没有那么iost<0 enddo !READ(100, nml=ab, IOSTAT = iost) print *, 'ab: iost=', iost, ssss REWIND(100) end program main
-
RE: 为什么使用了DMA计算就报错了,但是athread没有这个问题
试试这个宏,把回答字当最后一个参数传给
dma_rpl
.
https://gitee.com/swmore/swcache-assets/blob/master/dma_macros.h#L20