开发环境

Linux

查看Unbuntu版本

lsb_release -a
uname -a
cat /proc/version

用户管理

useradd [-m 建立用户目录][-c <备注>][-d <登入目录>][-e <有效期限>][-f <缓冲天数>][-g <群组>][-G <群组>][-s <shell>][-u <uid>][用户帐号]

user=NAME
useradd $user -d /home/$user -g HwHiAiUser; cp -r /etc/skel/. /home/$user/
useradd -m -s /bin/bash $user; usermod -g HwHiAiUser $user
useradd -m -s /bin/bash -g HwHiAiUser $user
chown -R $user:HwHiAiUser /home/$user/
passwd $user

# 修改用户组
usermod -a -G HwHiAiUser $user

useradd通过命令添加用户,adduser在Ubuntu上通过交互式命令添加用户,Centos上两者没区别。

Linux 使用 adduser 与 useradd 添加普通用户

CentOS

清除yum缓存:

yum clean all
# 可选清除缓存,rm -rf /var/cache/yum/*

增删改yum源后,重新构建缓存:

yum makecache

yum源在官方CentOS源的基础上,可配置EPEL(Extra Packages for Enterprise Linux)源,或安装Software collections(即centos-release-scl,具有持续更新的软件包)。

无网络情况下,配置本地源,如配置EulerOS-2.0SP8源:

yum_path=/etc/yum.repos.d/euleros_aarch64.repo
echo "[base]" > ${yum_path}
echo "name=EulerOS-2.0SP8 base" >> ${yum_path}
echo "baseurl=MIRROR.DOMAIN/euler/2.8/os/aarch64/" >> ${yum_path}
echo "enabled=1" >> ${yum_path}
echo "gpgcheck=1" >> ${yum_path}
echo "gpgkey=MIRROR.DOMAIN/euler/2.8/os/aarch64/RPM-GPG-KEY-EulerOS" >> ${yum_path}

安装GCC/G++,若yum无法安装最新版本,则通过SCL安装

yum install devtoolset-7
ln -s /opt/rh/devtoolset-7/root/usr/include/c++/7 /usr/include/c++/7
source /opt/rh/devtoolset-7/enable  # 可将该行写入.bashrc
# 设置默认CC、CXX编译器
export CC=/opt/rh/devtoolset-7/root/usr/bin/gcc
export CXX=/opt/rh/devtoolset-7/root/usr/bin/g++

CentOS C++开发环境配置,仅供参考,有部分错误。

SSH

SSH登录很卡,关闭selinux(重启生效),Arm系统默认是打开的:

sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config
setenforce 0
/usr/sbin/sestatus -v

设置ssh不断开:

sed -i "s/^export TMOUT.*/export TMOUT=0/g" /etc/profile
sed -i "s/.*ClientAliveInterval.*/ClientAliveInterval=600/g" /etc/ssh/sshd_config
sed -i "s/.*ClientAliveCountMax.*/ClientAliveCountMax=300/g" /etc/ssh/sshd_config
service sshd restart
export TMOUT=0

rsync传输文件,支持断点续传、增量同步,优于scp

# DIR1被拷贝到DIR2下
rsync -av SRC/DIR1 USER@IP:/DEST/DIR2/

# DIR1下的文件/目录被拷贝到DIR2下
rsync -av SRC/DIR1/ USER@IP:/DEST/DIR2/

端口放开

新装系统默认开启了防火墙,可以放开端口:

# 永久放开
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --reload
# 临时放开
iptables -I INPUT -p tcp --dport 8888 -j ACCEPT
iptables -I INPUT -p tcp --dport 1080 -j ACCEPT

查看进程

ps仅能查看进程启动命令的相对路径。启动一个进程时,在/proc/目录下会生成以进程号命名的文件夹,里面有多个文件记录了进程的详细信息:

  • cwd软链接是进程运行目录;
  • exe软链接是执行程序的绝对路径;
  • cmdline文件记录了命令行命令;
  • environ文件记录了运行时的环境变量;
  • fd目录保存了使用文件的软连接。

删除进程

批量删除/杀死CMD中包含KEYWORD(如train.py)的进程:

kill -9 `ps -ef | grep <KEYWORD> | awk '{print $2}' `

在上述要求的基础上排除root进程:

ps -ef | grep <KEYWORD> | grep -v root | awk '{print $2}' | xargs kill -9

其中:

  • awk的作用是输出某一列,{print $2}就是输出第二列,如上为pid列。
  • grep -v的作用是排除某个字符,如上排除了root用户的命令。
  • xargs从前面的命令获取输出作为参数来执行下一个命令。

硬盘管理

查看目录所在硬盘空间信息

df -lh /home/

Linux中查看硬盘信息 (daemon369.github.io)

查看块设备,不带参数时列出所有硬盘,根节点代表硬盘,二级节点代表磁盘上的分区。使用-d选项只列出硬盘,不列出分区。

lsblk [-d]

统计行数

统计代码行数:

wc -l `find . -name '*.go'`

其中,-l 参数是统计行数,find . -name *.go 是查找当前目录(包含子目录)下所有的go文件。

# 得到文件数目
find . -name '*.py' | wc -l
116

# 得到每个文件的行数及所有文件的行数
find . -name '*.py' | xargs wc -l
    43 ./dcama_mask_queryloss/check_coco_path.py
  18762 total

常用命令

zip -qr html.zip /home/html

Linux 软连接,不要在目录最后加/。软连接实际是字符串映射,源路径(已存在)会被当作字符串,路径不存在也不会报错。源路径请用绝对路径,或在目标(软连接)所在父目录下能访问的路径。目标路径可相对/绝对,父路径不存在会报错,文件/目录已存在则失败(无提示)。

# ln [参数][源文件或目录][目标文件或目录]
ln -s /PATH/TO/data /home/USER/data
# 删除软连接
rm /home/USER/data
# 修改软连接
ln -s /PATH/TO/new_data /home/USER/data

Bash历史管理。

# 全部清除
history -c
# 删除某行
history -d <行号>
# 修改文件
vim ~/.bash_history
# 修改文件后需刷新缓存
history -r 

rsync同步文件到本地,中断后本地文件夹/文件无法删除,提示没有权限。可使用空文件夹/小文件覆盖,然后删除。可能要注意原命令里文件夹是否带有/,保持一致,否则可能失败。

rsync -rtv --delete USER@HOST:EMPTY_FOLDER DEL_FOLDER

?

sed -i "s/\r//" install.sh

系统代理

在打开的终端窗口里配置,仅在当前窗口有效,关闭后失效。

# no_proxy为例外,非必须
export no_proxy="127.0.0.1, localhost"
export http_proxy="http://[USER:PASSWORD@]PROXY.DOMAIN:PORT"
export https_proxy="http://[USER:PASSWORD@]PROXY.DOMAIN:PORT"

SSL

OpenSSL 3.0.0a:软件库

SSLv3/SSL3:协议,Secure Sockets Layer

TLSv:协议,After SSLv3, SSL was renamed to TLS. Transport Layer Security and started with TLSv1.0 which is an upgraded version of SSLv3.

Ubuntu系统安装证书:

添加证书:
复制pem格式的根证书,重命名为 .crt格式。然后执行下边的命令

$sudo cp 证书路径.crt /usr/local/share/ca-certificates`
$sudo update-ca-certificates

update-ca-certificates命令将PEM格式的根证书内容附加到/etc/ssl/certs/ca-certificates.crt,而/etc/ssl/certs/ca-certificates.crt包含了系统自带的各种可信根证书。

删除证书:

$sudo rm -f /usr/local/share/ca-certificates/证书名称.crt
$sudo update-ca-certificates

IDE

远程开发

  • Windows本地IDE,如PyCharm, CLion, VScode,配置远程开发环境。
    • PyCham配置远程解释器。如需要可进一步修改(可选)远程服务器配置
    • CLion配置远程部署。如需要可进一步修改(可选)远程服务器
    • Pycharm/CLion配置代理,用于自动安装Plugins等:File>Settings>Appearance & Behavior>System Settings>HTTP Proxy>Manaual proxy configuration,内容参考下方系统代理设置。注意:No proxy for请填写*.公司域名,否则License会激活失败。
  • Linux服务器IDE,如PyCharm, CLion,已解压安装到programs。启动示例pycharm xxx/./pycharm/bin/pycharm.sh xxx/(需X11,可安装MobaXterm获取)。简单但仅支持同时一个设备运行。

免密登录

PyCharm、VScode均适用:vscode 使用pem文件免密连接服务器_vscode如何配置ssh的。pem-CSDN博客,免密/私钥连接。
./ssh/config

Host 10.x.x.x
  HostName 10.x.x.x
  Port 22
  User USER
  IdentityFile ~/.ssh/XXX.pem

VSCode插件不兼容

  1. Download extension
  2. Unzip it as zip
  3. In extensions/package.json change "engines"."vscode" to compatible vscode version
  4. Zip extension folder
  5. Change zipped extension name from "extension.zip" to "extension.vsix"
  6. Install "extension.vsix" to vscode via "Install from VSIX..."

Conda

Miniconda — Conda documentation

配置国内镜像源:

新建环境:

# 查看环境
conda env list
# 或
conda info --envs
# 新建环境
conda create -n NAME pyton=3.9  # ==锁死小版本3.9.0,=不锁死小版本3.9.x
# 或拷贝已有环境,节省下载时间
conda create -n NEW --clone OLD

如果是非联网环境,可以通过打包并拷贝conda环境的方式,拷贝到相同目录后conda可以自动识别。要求绝对路径相同,如其他机器的同样用户名下的conda环境/root/miniconda3/envs

激活环境:

# 在base或某个conda环境下
conda activate ENV
# 若未在某个conda环境下
source ~/miniconda3/bin/activate ENV

设置代理:

# 配置(注意对特殊字符做URL Encode)
conda config --set proxy_servers.http http://[USER:PASSWORD@]PROXY.DOMAIN:PORT
conda config --set proxy_servers.https http://[USER:PASSWORD@]PROXY.DOMAIN:PORT
conda config --set ssl_verify false
# 删除
conda config --remove-key proxy_servers
# 查看
conda config --show proxy_servers

删除环境:

# 删除环境及所有包
conda remove -n ENV --all

conda安装环境时,可能会安装CUDA-Toolkit之类的库在~/miniconda3/lib下,部分程序可能默认访问/usr/local/cuda/lib64/下的库文件,导致报错,例如:

ImportError: torch/lib/libtorch_cuda_cpp.so: symbol cudaGraphRetainUserObject version libcudart.so.11.0 not defined in file libcudart.so.11.0 with link time reference

可以手动设置export LD_LIBRARY_PATH=~/miniconda3/lib/:$LD_LIBRARY_PATH解决问题。

如遇到CondaHTTPError: HTTP 000 CONNECTION FAILED,通常是网络不稳定,可在conda配置中删除channels, default_channels项,或者修改custom_channels项。目前发现:

  • 安装包conda install XXX,使用阿里源可行。
  • 将错误信息里的包链接XXX.tar.bz2手动下载之后,执行conda install xxx.tar.bz2进行安装,然后重新执行原安装命令,安装依赖项。不推荐,会丢失来源。

如果在conda create ENV时遇到如下错误,可在conda配置中删除channels, default_channels项,因为镜像源可能不适合用于创建环境,使用默认的pkgs能解决。

Collecting package metadata (current_repodata.json): failed
UnavailableInvalidChannel: The channel is not accessible or is invalid.
  channel name: anaconda/pkgs/main
  channel url: http://mirrors.aliyun.com/anaconda/pkgs/main
  error code: 403

如果遇到如下索引错误,通常是因为缓存中的索引文件因异常中断导致格式错误,可以使用conda clean -i清除索引缓存。

json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
ERROR conda.auxlib.logz:stringify(163): Expecting value: line 1 column 1 (char 0)

如果遇到如下包安全检查错误,通常是因为通过不同方式安装了相同的包,手动删除路径对应的tar包和目录即可。

SafetyError: The package for xxx located at /home/xxx/anaconda/... 
appears to be corrupted. The path ... 
has an incorrect size.
    reported size: 7680 bytes
    actual size: 5695 bytes

Python

# 配置清华源
pip config set global.index-url http://pypi.tuna.tsinghua.edu.cn/simple
pip config set global.trusted-host pypi.tuna.tsinghua.edu.cn
# 删除配置
pip config unset global.index-url
pip config unset global.trusted-host
# 查看配置
pip config list

安装whl文件

pip install xxx.whl
# 卸载
pip uninstall xxx

源码安装库

cd xxx
python setup.py install
# 卸载
pip uninstall xxx

源码安装Python

cd Python-3.7.5
./configure --prefix=/root/miniconda3/envs/ci --enable-shared
make -j72
make install -j72
./configure --prefix=/root/miniconda3/envs/ci
make -j72
make install -j72

Jupyter

后台运行Jupyter,log会输出到nohup.out

nohup jupyter lab --ip=10.175.105.195 --port=1080 --allow-root &

CMake

支持非root用户安装:

  • Download | CMake页面找到“Binary distributions”,下载对应版本.sh文件,在希望安装的目录执行文件sh XXX.sh,根据提示完成安装。或者下载对应的压缩包,解压希望安装的目录。
  • 修改.bashrc,将安装目录下的bin/所在路径添加到PATH环境变量里,source .bashrc或者重新打开终端窗口。
  • 检查安装版本cmake --version

Make

make install指定安装目录

OpenCV

官网:Home - OpenCV
安装:OpenCV: Installation in Linux
支持非root用户安装,配置CMAKE_INSTALL_PREFIX

# 从Github或者官网下载:[Releases - OpenCV](https://opencv.org/releases/)
wget -O opencv.zip https://github.com/opencv/opencv/archive/master.zip
unzip opencv.zip

# Create build directory
mkdir -p build && cd build

# Configure
cmake -D CMAKE_BUILD_TYPE=Release -D OPENCV_GENERATE_PKGCONFIG=YES -D CMAKE_INSTALL_PREFIX=$HOME/programs/opencv/ ..

# Build,或者make -j4,通过nproc命令查询线程数
cmake --build . -j4

# Install,将include目录和lib目录拷贝到`CMAKE_INSTALL_PREFIX`
# 如果不拷贝到系统目录,则无需sudo
sudo make install

CUDA支持,WITH_CUDA=ON, OPENCV_DNN_CUDA=ON。OpenCV 4.0之后所有CUDA加速库被移到opencv_contrib下,需要将opencv和opencv_contrib一起build,即增加配置OPENCV_EXTRA_MODULES_PATH

# build with all modules in opencv_contrib
cmake -DOPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules ../opencv
# build with one of opencv_contrib modules
cmake -DOPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules/cudaarithm ../opencv

# 示例
cmake .. -D CMAKE_BUILD_TYPE=Release -D OPENCV_GENERATE_PKGCONFIG=YES -D CMAKE_INSTALL_PREFIX=$HOME/programs/opencv/ \
-D WITH_CUDA=ON -D WITH_CUDNN=ON -D OPENCV_DNN_CUDA=ON -D WITH_CUBLAS=1 -D WITH_CUFFT=ON -D WITH_NVCUVID=ON \
-DOPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-4.5.5/modules/

# 可选指定,未指定时自动识别
-D CUDNN_LIBRARY=/usr/local/cuda/lib64/libcudnn.so.8.3.3 \
-D CUDNN_INCLUDE_DIR=/usr/local/cuda/include  \
-D CUDA_CUDA_LIBRARY=/usr/local/cuda/lib64/stubs/libcuda.so

TensorRT

若使用root权限使用apt-get/yum安装,请下载deb/rpm包,否则请下载tar包,NVIDIA TensorRT 8.x Download

安装方法参考官方Install Guide,含deb、rpm、tar包等安装方法。

安装Boost

参考官网安装指导,支持非root用户安装,支持安装部分lib。在页面前部Get Boost获取源码下载链接,下载并解压,执行:

cd path/to/boost_1_82_0
./bootstrap.sh --prefix=$HOME/programs/boost_1_82_0/
./b2 install

安装GoogleTest/gtest

参考官方仓库使用指导,通常无需安装,直接下载源码,然后将源码集成到C++工程中。如需安装,下载源码,执行:

cd googletest        # Main directory of the cloned repository.
mkdir build          # Create a directory to hold the build output.
cd build

# Configure, Generate native build scripts for GoogleTest。 GoogleMock可选关闭。
cmake .. [-DBUILD_GMOCK=OFF] -D CMAKE_INSTALL_PREFIX=$HOME/programs/googletest/

# Build,或者make -j4,通过nproc命令查询线程数
cmake --build . -j4

# Install,将include目录和lib目录拷贝到`CMAKE_INSTALL_PREFIX`
# 如果不拷贝到系统目录,则无需sudo
sudo make install

C++编译器

GCC/G++,Clang/LLVM。
《CMake Best Practice》第 2 章笔记

将include目录添加到C/C++头文件搜索路径里:

export C_INCLUDE_PATH=/opt/rh/devtoolset-11/root/usr/include/c++/11
export CPLUS_INCLUDE_PATH=/opt/rh/devtoolset-11/root/usr/include/c++/11

在Ubuntu 22.04中安装Clang

sudo apt-get install libclang-14-dev clang-14

提示:libclang.so一般位于/usr/lib/x86-linux-gnu/libclang-10.so

在CentOS 7.6中安装Clang

yum install centos-release-scl-rh
yum install llvm-toolset-7.0-clang
# 使Clang在当前Session生效
source /opt/rh/llvm-toolset-7.0/enable
# 可选,修改.bashrc便于Clang自动生效
echo "source /opt/rh/devtoolset-7/enable" >> ~/.bashrc

配置环境变量。为防止后续Clang无法自动找到头文件,建议添加如下环境变量。

export CPLUS_INCLUDE_PATH=/opt/rh/llvm-toolset-7.0/root/usr/lib64/clang/7.0.1/include

提示:libclang.so一般位于/opt/rh/llvm-toolset-7.0/root/usr/lib64/libclang.so.7

在SLES 12.5中安装Clang

sudo zypper install libclang7 clang7-devel

配置环境变量。为防止后续Clang无法自动找到头文件,建议添加如下环境变量。

export CPLUS_INCLUDE_PATH=/usr/lib64/clang/7.0.1/include

提示:libclang.so一般位于/usr/lib64/libclang.so

Clang

安装Clang预编译包

# 使用`uname -m`可获取机器硬件架构,例如返回`x86_64`
# 使用`cat /etc/os-release`可获取系统名称、版本等信息
NAME=`cat /etc/os-release | awk -F= '{if ($1=="NAME") print $2}'`
VERSION_ID=`cat /etc/os-release | awk -F= '{if ($1=="VERSION_ID") print $2}'`

if [ "$NAME" == '"Ubuntu"' ];then
  # 在Ubuntu 22.04中安装Clang
  if [ $VERSION_ID == '"22.04"' ];then
    sudo apt-get install libclang-14-dev clang-14
  else
    # 在Ubuntu 18.04中安装Clang
    sudo apt-get install libclang-10-dev clang-10
  fi
elif [ "$NAME" == '"CentOS Linux"' ];then
  # 在CentOS 7.6中安装Clang
  yum install centos-release-scl-rh
  yum install llvm-toolset-7.0-clang
  ENABLE="source /opt/rh/llvm-toolset-7.0/enable"
  CPLUS_INCLUDE_PATH=/opt/rh/llvm-toolset-7.0/root/usr/lib64/clang/7.0.1/include
  # 可选,修改.bashrc便于Clang自动生效
  echo $ENABLE >> ~/.bashrc
  # 配置环境变量。为防止后续Clang无法自动找到头文件,建议添加如下环境变量。
  echo "export CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH" >> ~/.bashrc
elif [ "$NAME" == '"SLES"' ];then
  # 在SLES 12.5中安装Clang
  sudo zypper install libclang7 clang7-devel
  CPLUS_INCLUDE_PATH=/usr/lib64/clang/7.0.1/include
  export $CPLUS_INCLUDE_PATH
  echo "export CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH" >> ~/.bashrc
else
  echo "Warning: $NAME is not supported automatic installation of Clang, Please install it manually."
fi

# 必须通过`source`或`.`执行脚本,其中的环境变量才会在当前bash生效
# 新建bash也可以使环境变量立即生效
bash

源码编译安装Clang

如果无法通过上述方法或者包管理工具安装Clang>=6.0.0,可以在LLVM Release页面尝试
下载对应平台的安装包。如果以上方法都不可行,则可以通过源码编译安装LLVM和Clang,详细安装指导参考
Getting Started with the LLVM System。编译LLVM依赖一些软件包,
需用户提前确保依赖满足,或者自行手动安装依赖。下表列出了这些依赖,“包名”列是LLVM所依赖的软件包通常的名称,
“版本”列是“可以工作“的软件包版本,“说明”列描述了LLVM如何使用这个软件包。

包名 版本 说明
CMake >=3.20.0 生成Makefile/workspace
GCC >=7.1.0 C/C++编译器
zlib >=1.2.3.4 压缩/解压功能
GNU Make 3.79, 3.79.1 编译Makefile/build

下面以Clang7.0.0为例编译安装LLVM和Clang。

获取源码。通过Git获取源码,包括LLVM和Clang子工程,切换到对应版本。

git clone https://github.com/llvm/llvm-project.git
git checkout llvmorg-7.0.0

或者直接下载对应版本的源码zip包。

wget https://github.com/llvm/llvm-project/archive/refs/tags/llvmorg-7.0.0.zip
# 如果没有安装wget,可以采用curl
curl -o llvmorg-7.0.0.zip https://github.com/llvm/llvm-project/archive/refs/tags/llvmorg-7.0.0.zip
# 解压得到llvm-project-llvmorg-7.0.0目录
unzip -q llvmorg-7.0.0.zip

编译和安装LLVM和Clang。

cd llvm-project-llvmorg-7.0.0/; mkdir build; cd build
# 建议不开启libcxx;libcxxabi,使用默认的gcc/g++配套的libstdc++
cmake -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_PROJECTS="clang" -G "Unix Makefiles" ../llvm
make -j32  # 将32换成小于所在机器CPU线程数的数字,或者去除数字,自动设定
make install  # 安装到默认位置/usr/local/lib/

配置环境变量。为防止后续Clang无法自动找到头文件,建议添加如下环境变量。

export CPLUS_INCLUDE_PATH=/usr/local/lib/clang/7.0.0/include

提示:libclang.so一般位于/usr/local/lib/libclang.so

CUDA

CUDA官网见CUDA Toolkit - Free Tools and Training | NVIDIA Developer,包含下载、发行说明、安装指导和文档。三方教程见保姆级安装NVIDIA CUDA、CUDNN

CUDA Toolkit与Toolkit Driver版本配套关系,参见CUDA 12.2 Release Notes,包括:

  • CUDA Toolkit and Minimum Required Driver Version for CUDA Minor Version Compatibility
    • Using a Minimum Required Version that is different from Toolkit Driver Version could be allowed in compatibility mode – please read the CUDA Compatibility Guide for details.
  • CUDA Toolkit and Corresponding Driver Versions
    • For convenience, the NVIDIA driver is installed as part of the CUDA Toolkit installation. Note that this driver is for development purposes and is not recommended for use in production with Tesla GPUs.

从CUDA 11开始,各个组件分别设置版本。

安装流程为:

  1. 下载CUDA Toolkit 12.2 Update 1 Downloads
  2. 安装:先安装CUDA Driver,再安装CUDA Tookit
  3. 配置环境变量

安装指导见:

Rust

在 Windows 上针对 Rust 设置开发环境 | Microsoft Learn

VSCode插件:Rust with Visual Studio Code

配置Rustup镜像源

配置Crates镜像源

.cargo/config配置示例

[source.crates-io]
replace-with = 'ustc'

[source.ustc]
registry = "sparse+https://mirrors.ustc.edu.cn/crates.io-index/"

[source.tsinghua]
registry = "sparse+http://mirrors.tuna.tsinghua.edu.cn/crates.io-index/"

[http]
check-revoke = false

参考资料:

Apex

File "G:\Anaconda3\envs\xyy_imagenaire\lib\site-packages\apex\optimizers\fused_adam.py", line 80, in init
raise RuntimeError('apex.optimizers.FusedAdam requires cuda extensions')
RuntimeError: apex.optimizers.FusedAdam requires cuda extensions

参考:Issue #1193。This is because of apex cannot import amp_C,you can check the file "G:\Anaconda3\envs\xyy_imagenaire\lib\site-packages\apex\optimizers\fused_adam.py", also you can use your python shell to verify this:

import torch
import amp_C  # must import torch before import amp_C

Maybe you can get error like: libstdc++.so.6: version 'GLIBCXX_3.4.20' not found', If so, you can try the following commands:

conda install libgcc
export LD_LIBRARY_PATH=/path/to/anaconda/envs/myenv/lib:$LD_LIBRARY_PATH
cd /path/to/anaconda/envs/myenv/lib
ln -s libstdc++.so.6.0.30 libstdc++.so.6

And you can add export LD_LIBRARY_PATH=/path/to/anaconda/envs/myenv/lib:$LD_LIBRARY_PATH to ~/.bashrc file.

Libaio

编译安装libaio-0.3.113,支持非root用户。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,684评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,143评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,214评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,788评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,796评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,665评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,027评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,679评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,346评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,664评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,766评论 1 331
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,412评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,015评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,974评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,073评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,501评论 2 343

推荐阅读更多精彩内容