Skip to content

Commit

Permalink
Merge pull request #31 from trojan-uma/main
Browse files Browse the repository at this point in the history
描述本地化,统一排版
  • Loading branch information
licyk committed Jul 16, 2024
2 parents 216e4f8 + bcd25c2 commit 641a2b1
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 35 deletions.
37 changes: 20 additions & 17 deletions docs/help/amd_info.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,63 +11,66 @@ title: AMD

## ZLUDA 使用提醒

如果系统中同时存在集成的 AMD GPU 和专用的 AMD GPU,则 ZLUDA 将使用集成的 GPU
如果系统中同时存在 AMD 的核心显卡和独立显卡,则 ZLUDA 将使用核心显卡

这是底层 ROCm/HIP 运行时中的一个错误。您可以通过禁用集成 GPU 来解决此问题
这是底层 ROCm / HIP 运行时中的一个错误。您可以通过禁用核心显卡来解决此问题

在 Windows 上,我们建议您使用环境变量`HIP_VISIBLE_DEVICES=1`或在设备管理器中禁用它,关于环境变量[此处有更多内容](https://rocmdocs.amd.com/en/latest/conceptual/gpu-isolation.html#hip-visible-devices)
在 Windows 上,我们建议您使用环境变量 `HIP_VISIBLE_DEVICES=1` 或在设备管理器中禁用它,关于环境变量[此处有更多内容](https://rocmdocs.amd.com/en/latest/conceptual/gpu-isolation.html#hip-visible-devices)

集成 GPU(经 Radeon 680M 测试)的工作方式有限。一些很少使用的 GPU 操作(abort、printf 等)会挂起或使应用程序崩溃。此外,性能库支持(cuBLAS、cuDNN 等)可能会受到限制,从而导致更复杂的应用程序无法运行。
核心显卡(经 Radeon 680M 测试)的工作方式有限。一些很少使用的 GPU 操作(abort、printf 等)会挂起或使应用程序崩溃。此外,性能库支持(cuBLAS、cuDNN 等)可能会受到限制,从而导致更复杂的应用程序无法运行。

ZLUDA 可以使用 AMD 服务器 GPU(通过 Instinct MI200 进行测试),但需要注意。
ZLUDA 可以使用 AMD 计算卡(通过 Instinct MI200 进行测试),但需要注意。

在服务器 GPU 上,ZLUDA 可以编译 CUDA GPU 代码以以下两种模式之一运行:
在 AMD 计算卡上,ZLUDA 可以编译 CUDA GPU 代码以以下两种模式之一运行:

快速模式,速度更快,但可以使奇特(但正确)的 GPU 代码挂起。
慢速模式,这应该会使 GPU 代码更稳定,但可能会阻止某些应用程序在 ZLUDA 上运行。
默认情况下,ZLUDA使用快速模式。这是因为:
默认情况下,ZLUDA 使用快速模式。这是因为:

性能差异很大,快速模式可以快两倍。
在多个项目(SPECFEM3D, QUDA, CHroma, MILC, Kokkos, LAMMPS, OpenFOAM, XGBoost, NAMD, LAMMPS)中没有遇到可以跳闸快速模式的代码模式。
您可以使用环境变量`ZLUDA_WAVE64_SLOW_MODE=1`强制在慢速模式下编译。
您可以使用环境变量 `ZLUDA_WAVE64_SLOW_MODE=1` 强制在慢速模式下编译。

这些都不适用于台式机和集成 GPU(RDNA 系列)
这些都不适用于家用级显卡(RDNA 系列)

***

## ZLUDA 首次启动

使用ZLUDA的应用程序启动速度很慢
使用 ZLUDA 的应用程序启动速度很慢

在第一次启动时,ZLUDA需要为应用程序编译GPU代码。这是一次性成本,编译后的 GPU 代码缓存在 Windows的`%LOCALAPPDATA%` 中和 Linux的`$XDG_CACHE_HOME`` $HOME/.cache` 中。
在第一次启动时,ZLUDA 需要为应用程序编译 GPU 代码。这是一次性成本,编译后的 GPU 代码缓存在 Windows 的 `%LOCALAPPDATA%` 中和 Linux 的 `$XDG_CACHE_HOME` `$HOME/.cache` 中。
某些应用程序会在使用 GPU 代码时逐渐加载它。如果不希望这样做,您可以尝试设置环境变量 `CUDA_MODULE_LOADING=EAGER`。这取决于应用程序的编程方式,但它可能会强制在启动时加载(和编译)所有内核,无论它们是否被使用。

***

## 运行 ZLUDA 的应用程序可能会产生略有不同的值

首先,ZLUDA忽略了内核中存在的一些浮点非正态和舍入模式信息。其次,对于CUDA中的某些近似(非IEEE 754)NVIDIA浮点运算,ZLUDA盲目使用近似AMD浮点运算。两者可能具有不同的精度。
首先,ZLUDA 忽略了内核中存在的一些浮点非正态和舍入模式信息。其次,对于 CUDA 中的某些近似(非IEEE 754)NVIDIA浮点运算,ZLUDA 盲目使用近似 AMD 浮点运算。两者可能具有不同的精度。

***

## CUDA 12+
使用 CUDA 12 构建并使用 Thrust 的应用程序会崩溃`LLVM ERROR: unsupported libcall legalization`

这是一个 ROCm/HIP 错误。目前,使用 CUDA 12 之前版本构建的 CUDA 应用程序效果最好。使用 CUDA 12 和 CUDA 12 之前的版本构建也可能有效。
使用 CUDA 12 构建并使用 Thrust 的应用程序会崩溃 `LLVM ERROR: unsupported libcall legalization`

这是一个 ROCm / HIP 错误。目前,使用 CUDA 12 之前版本构建的 CUDA 应用程序效果最好。使用 CUDA 12 和 CUDA 12 之前的版本构建也可能有效。

***

## OptiX 的

ZLUDA 为 Arnold 提供了最低限度的 OptiX 实现。有关详细信息,请参阅 [Arnold](https://github.com/vosen/ZLUDA#arnold) 部分。

***

## Windows

防病毒软件将 ZLUDA 标记为恶意软件。

ZLUDA 启动器`zluda.exe`使用恶意软件使用的一些技术,但效果很好。`zluda.exe`劫持该进程,并将原始 NVIDIA CUDA 库的所有使用重定向为使用 ZLUDA 的 CUDA。
ZLUDA 启动器 `zluda.exe` 使用恶意软件使用的一些技术,但效果很好。`zluda.exe` 劫持该进程,并将原始 NVIDIA CUDA 库的所有使用重定向为使用 ZLUDA 的 CUDA。

不要在反作弊的游戏中使用`zluda.exe`。ZLUDA 不支持 CUDA 游戏工作负载(PhysX 或 DLSS),反作弊可能会误认为`zluda.exe`是恶意软件或作弊软件。
不要在反作弊的游戏中使用 `zluda.exe`。ZLUDA 不支持 CUDA 游戏工作负载(PhysX 或 DLSS),反作弊可能会误认为 `zluda.exe` 是恶意软件或作弊软件。

***

Expand All @@ -77,4 +80,4 @@ ZLUDA 启动器`zluda.exe`使用恶意软件使用的一些技术,但效果很

ZLUDA 对性能库(cuDNN, cuBLAS, cuSPARSE, cuFFT, OptiX, NCCL)提供的支持有限。目前,此支持仅适用于 Linux,在 Windows 上不可用。

ZLUDA 启动器 `zluda.exe`不支持 32 位进程。如果应用程序启动 32 位子进程`a.exe`则 32 位进程`a.exe`及其 64 位子进程`a64.exe`都无法使用 ZLUDA。这会影响SiSoft Sandra。
ZLUDA 启动器 `zluda.exe` 不支持 32 位进程。如果应用程序启动 32 位子进程 `a.exe` 则 32 位进程 `a.exe` 及其 64 位子进程 `a64.exe` 都无法使用 ZLUDA。这会影响 SiSoft Sandra。
36 changes: 18 additions & 18 deletions docs/help/intel_info.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,54 +19,54 @@ title: Intel

# 运行报错 invalid device pointer if import horovod.torch as hvd before import intel_extension_for_pytorch

原因:`Intel® Optimization for Horovod*`使用`Intel® Extension for PyTorch*`提供的实用程序。不正确的导入顺序导致`Intel® Extension for PyTorch*`` Intel® Optimization` 之前卸载 在执行结束时对 Horovod* 进行优化,并触发此错误。
原因:`Intel® Optimization for Horovod*` 使用 `Intel® Extension for PyTorch*` 提供的实用程序。不正确的导入顺序导致 `Intel® Extension for PyTorch*` `Intel® Optimization` 之前卸载 在执行结束时对 Horovod* 进行优化,并触发此错误。

解决方案:在`import intel_extension_for_pytorch`之前加上`import horovod.torch as hvd`
解决方案:在 `import intel_extension_for_pytorch` 之前加上 `import horovod.torch as hvd`

***

# dpcpp 设备数应大于零。

原因:如果您在 conda 环境中使用`Intel® Extension for PyTorch*`,您可能会遇到此错误。因为Conda 还附带了 `libstdc++.so` 动态库文件,该文件可能与操作系统中附带的文件冲突。
原因:如果您在 conda 环境中使用 `Intel® Extension for PyTorch*` ,您可能会遇到此错误。因为Conda 还附带了 `libstdc++.so` 动态库文件,该文件可能与操作系统中附带的文件冲突。

解决方案:将操作系统中的`libstdc++.so`文件路径导出到环境变量`LD_PRELOAD`
解决方案:将操作系统中的 `libstdc++.so` 文件路径导出到环境变量 `LD_PRELOAD`

***

## 由_GLIBCXX_USE_CXX11_ABI引起的符号未定义
## _GLIBCXX_USE_CXX11_ABI 引起的符号未定义

`ImportError: undefined symbol: _ZNK5torch8autograd4Node4nameB5cxx11Ev`
原因:DPC++ 不支持 `_GLIBCXX_USE_CXX11_ABI=0``Intel® Extension for PyTorch*`始终使用`_GLIBCXX_USE_CXX11_ABI=1`进行编译。当 PyTorch*`_GLIBCXX_USE_CXX11_ABI=0`编译时,会出现此符号未定义问题。
`ImportError: undefined symbol: _ZNK5torch8autograd4Node4nameB5cxx11Ev`
原因:DPC++ 不支持 `_GLIBCXX_USE_CXX11_ABI=0``Intel® Extension for PyTorch*` 始终使用 `_GLIBCXX_USE_CXX11_ABI=1` 进行编译。当 PyTorch*`_GLIBCXX_USE_CXX11_ABI=0` 编译时,会出现此符号未定义问题。

解决方案:传递导出 `GLIBCXX_USE_CXX11_ABI=1 ` 并使用支持 ` _GLIBCXX_USE_CXX11_ABI=1 ` 的特定编译器编译 PyTorch*。我们建议在[下载服务器](https://developer.intel.com/ipex-whl-stable-xpu)中以避免此问题。
解决方案:传递导出 `GLIBCXX_USE_CXX11_ABI=1` 并使用支持 `_GLIBCXX_USE_CXX11_ABI=1` 的特定编译器编译 PyTorch*。我们建议在[下载服务器](https://developer.intel.com/ipex-whl-stable-xpu)中以避免此问题。

***

## 使用英特尔 MPI 时,AI 模型执行完成后终止错误。

原因:当 AI 模型(例如 RN50 训练)在英特尔 MPI 环境中执行完成时,这是一个随机问题。它不是用户友好的,因为模型执行不优雅地结束。此问题已在 PyTorch* 2.3 [#116312](https://github.com/pytorch/pytorch/commit/f657b2b1f8f35aa6ee199c4690d38a2b460387ae) 中修复。

解决方案:在模型脚本的清理阶段添加 `dist.destroy_process_group() `,如分布式数据并行入门中所述,如[Getting Started with Distributed Data Parallel](https://pytorch.org/tutorials/intermediate/ddp_tutorial.html)中所述在 Intel Extension for PyTorch* 支持 PyTorch* 2.3 之前®。
解决方案:在模型脚本的清理阶段添加 `dist.destroy_process_group()`,如分布式数据并行入门中所述,如[Getting Started with Distributed Data Parallel](https://pytorch.org/tutorials/intermediate/ddp_tutorial.html)中所述在 Intel Extension for PyTorch* 支持 PyTorch* 2.3 之前®。

***

## 在 Intel® Arc™ A-Series GPUs 上运行某些 AI 模型时。 -997 runtime error
## 在 Intel® Arc™ A-Series GPUs 上运行某些 AI 模型时。 -997 runtime error

原因:一些 -997 运行时错误实际上是内存不足错误。由于 Intel® Arc™ A-Series GPUs 的设备内存少于Intel® Data Center GPU Flex Series 170和Intel® Data Center GPU Max Series,因此在其上运行某些 AI 模型可能会触发内存不足错误,并导致它们报告故障,例如最有可能的 -997 运行时错误。这是意料之中的。内存使用优化是一项正在进行的工作,以允许英特尔®锐炫™ A 系列 GPU 支持更多 AI 模型。
原因:一些 -997 运行时错误实际上是内存不足错误。由于 Intel® Arc™ A-Series GPUs 的设备内存少于 Intel® Data Center GPU Flex Series 170 和 Intel® Data Center GPU Max Series,因此在其上运行某些 AI 模型可能会触发内存不足错误,并导致它们报告故障,例如最有可能的 -997 运行时错误。这是意料之中的。内存使用优化是一项正在进行的工作,以允许英特尔®锐炫™ A 系列 GPU 支持更多 AI 模型。

***

## 在 WSL2 上,从Intel® Arc™ A-Series GPUs 的源代码构建失败,而不会引发任何错误。
## 在 WSL2 上,从 Intel® Arc™ A-Series GPUs 的源代码构建失败,而不会引发任何错误。

原因:您的系统可能没有足够的内存,因此调用了 Linux 内核的内存不足杀手。可以通过在 bash(WSL2 终端)上运行 dmesg 来验证这一点。

解决方案:如果 OOM 杀手确实终止了生成过程,则可以尝试增加 WSL2 的交换大小和/或减少具有环境变量 `MAX_JOBS `的并行生成作业数(默认情况下,它等于逻辑 CPU 内核数)。因此,将 ` MAX_JOBS `设置为 `1 `是一种非常保守的方法,会大大减慢速度)。
解决方案:如果 OOM 杀手确实终止了生成过程,则可以尝试增加 WSL2 的交换大小和/或减少具有环境变量 `MAX_JOBS` 的并行生成作业数(默认情况下,它等于逻辑 CPU 内核数)。因此,将 `MAX_JOBS` 设置为 `1` 是一种非常保守的方法,会大大减慢速度)。

***

## 某些工作负载在 WSL2 上一段时间后终止并显示错误。CL_DEVICE_NOT_FOUND

原因:此问题是由于 Windows 上的 [TDR feature](https://learn.microsoft.com/en-us/windows-hardware/drivers/display/tdr-registry-keys#tdrdelay)造成的。
原因:此问题是由于 Windows 上的 [TDR feature](https://learn.microsoft.com/en-us/windows-hardware/drivers/display/tdr-registry-keys#tdrdelay) 造成的。

解决方案:尝试将 Windows 注册表中的 TDRDelay 增加到一个大值,例如 20(默认为 2 秒),然后重新启动。

Expand All @@ -82,15 +82,15 @@ title: Intel

## 在英特尔®数据中心 GPU Max 系列显卡上执行 LLM 推理工作负载时,存在随机不稳定问题,例如页面错误或访问冲突。

原因:LTS 驱动程序[803.29](https://dgpu-docs.intel.com/releases/LTS_803.29_20240131.html) 上报告了此问题。根本原因正在调查中。
原因:LTS 驱动程序 [803.29](https://dgpu-docs.intel.com/releases/LTS_803.29_20240131.html) 上报告了此问题。根本原因正在调查中。

解决方案:使用主动滚动稳定释放驱动程序 [775.20](https://dgpu-docs.intel.com/releases/stable_775_20_20231219.html) 或最新驱动程序版本来解决。

***

## Undefined symbol: mkl_lapack_dspevd. Intel MKL FATAL ERROR: cannot load libmkl_vml_avx512.so.2 or `libmkl_vml_def.so.2.

原因:当英特尔扩展 PyTorch* 是使用 oneMKL 库构建的,而 PyTorch* 不是使用任何 MKL 库构建时®,可能会出现此问题。oneMKL内核可能错误地进入CPU后端 并触发此问题。
原因:当英特尔扩展 PyTorch* 是使用 oneMKL 库构建的,而 PyTorch* 不是使用任何 MKL 库构建时,可能会出现此问题。oneMKL 内核可能错误地进入CPU后端 并触发此问题。

解决方案:通过从 conda 安装 oneMKL 库来解决问题:

Expand All @@ -107,13 +107,13 @@ conda install mkl-include

原因:当系统中存在多个 MKL 库时,使用了错误的 MKL 库。

解决方案:通过以下方式预加载oneMKL
解决方案:通过以下方式预加载 oneMKL

```
export LD_PRELOAD=${MKL_DPCPP_ROOT}/lib/intel64/libmkl_intel_lp64.so.2:${MKL_DPCPP_ROOT}/lib/intel64/libmkl_intel_ilp64.so.2:${MKL_DPCPP_ROOT}/lib/intel64/libmkl_gnu_thread.so.2:${MKL_DPCPP_ROOT}/lib/intel64/libmkl_core.so.2:${MKL_DPCPP_ROOT}/lib/intel64/libmkl_sycl.so.2
```

如果您继续看到其他共享对象文件的类似问题,请在 `${MKL_DPCPP_ROOT}/lib/intel64/ `下添加相应的文件,通过 `LD_PRELOAD `。请注意,如果系统上安装了多个 MKL 库,则库的后缀可能会更改(例如从 .1 更改为 .2)。
如果您继续看到其他共享对象文件的类似问题,请在 `${MKL_DPCPP_ROOT}/lib/intel64/` 下添加相应的文件,通过 `LD_PRELOAD `。请注意,如果系统上安装了多个 MKL 库,则库的后缀可能会更改(例如从 .1 更改为 .2)。

***

Expand Down

0 comments on commit 641a2b1

Please sign in to comment.