yuyi
Mac OS 运行程序出现 `zsh: segmentation fault`
在终端跑程序的时候报错
zsh: segmentation fault python main.py --epochs 2 --mask_ratio 0.2
在 Unix-like系统(包括macOS)中, OpenMP 库默认并行执行带有 #pragma omp parallel
的代码块,可能和 PyTorch 中 c 相关的源码有关。
export KMP_DUPLICATE_LIB_OK=TRUE
:
这个环境变量告诉OpenMP忽略由于动态库加载时可能出现的重复库问题。在使用多个动态库时,如果这些库中包含了OpenMP的实现,可能会出现冲突。设置这个变量为TRUE可以防止OpenMP在初始化时因为检测到多个版本的OpenMP实现而报错。export OMP_NUM_THREADS=1
:
这个环境变量设置OpenMP在并行区域时使用的最大线程数。将其设置为1意味着即使代码中有并行指令,OpenMP也不会创建额外的线程,只会使用一个线程来执行任务。这通常用于调试并行程序,因为在单线程模式下,程序的行为更可预测,也更容易跟踪。
当你在终端中执行这些命令时,它们仅对当前终端会话有效。一旦你关闭终端或注销,这些设置就会失效。如果你想要在系统范围内永久设置这些环境变量,你可以将它们添加到你的shell配置文件中,如.bashrc、.bash_profile、.zshrc等,取决于你使用的是哪个shell。
请注意,这些设置可能会影响到使用了OpenMP的程序的性能和行为,因此应该根据你的具体需求来配置它们。如果你正在调试并行程序,这些设置可以帮助你简化调试过程。如果你的程序需要并行执行以提高性能,那么你应该根据可用的处理器核心数来合理设置OMP_NUM_THREADS。
- 指定 conda 环境的 pip 进行库的安装
/path/to/conda/env/bin/pip install package_name