24. Cytoscape 与 OpenCL(GPU 计算)¶
24.1. 它的用途是什么?¶
Cytoscape 提供了基础支持,可利用 OpenCL 将计算密集型任务分流到 GPU、多核 CPU 或多处理器卡上进行并行处理。Cytoscape 中的 OpenCL 支持主要是为了给第三方 Cytoscape 应用程序提供统一的 OpenCL 访问接口,但部分核心功能(Prefuse 布局)也采用了 OpenCL 实现以提升性能。
由于 OpenCL 几乎可以在任何设备上运行,包括没有专用 GPU 的台式计算机,因此您应该能够在任何可以运行 Cytoscape 的平台上使用 OpenCL 功能,尽管您可能需要为您的设备安装额外的驱动程序。
24.2. 设置与配置¶
CyCL 核心应用程序(应已包含在您的 Cytoscape 发行版中)允许您查看可用的 OpenCL 设备并配置您首选的 OpenCL 计算设备。您可以查看可用的 OpenCL 设备并配置您的首选设备,请选择 编辑 (Edit) → 首选项 (Preferences) → OpenCL 设置 (OpenCL Settings…)。

在大多数情况下,您应该将首选设备设置为 GPU(如果您有的话)。如果在配置窗口中没有看到您打算使用的设备(或根本看不到任何设备),您可能需要安装 OpenCL 驱动程序。对于主流厂商的 GPU,OpenCL 驱动程序通常随显卡驱动程序一起安装。如果您已安装最新的显卡驱动程序但列表中仍未看到您的设备,请检查 GPU 制造商的网站。要在 CPU(即任何台式计算机)或 Xeon Phi 上使用 OpenCL,您需要从 CPU 制造商的网页上单独下载并安装驱动程序。
Intel CPU 的驱动程序可在以下地址下载:https://software.intel.com/en-us/articles/opencl-drivers#latest_CPU_runtime - 请查找 runtime-only 版本。AMD 要求您针对旧硬件查找对应设备的驱动程序,或者使用 ROCm:https://github.com/RadeonOpenCompute/ROCm/wiki#What-Is-ROCm。
警告:在刚刚为 OpenCL 设备安装驱动程序后,Cytoscape 可能需要重启才能识别该设备。
24.3. OpenCL/GPU 故障排除¶
如果任何 OpenCL 应用程序无法工作,以下是一些常见原因:
没有可用的 OpenCL 设备¶
诊断与处理:请参阅上方的 设置与配置。
Cytoscape 控制台显示“找不到 OpenCL.dll”¶
处理:确保包含 OpenCL.dll 的 Windows 系统目录已列在 Java 系统属性 java.library.path 的值中(OpenCL.dll 通常可以在 %windir\SysWOW64% 或 %windir%\system32 中找到)。您可以通过在 Cytoscape.vmoptions 文件中添加一行形如 -Djava.library.path=path1;path2 的代码来修改 java.library.path。Cytoscape.vmoptions 文件位于 Cytoscape 安装目录中。
在 GPU 上运行 OpenCL 时,计算机出现短暂无响应,随后屏幕重置。¶
处理:如果在处理主显示任务的 GPU 上运行计算,且计算占用了 GPU 时间过长,导致操作系统(如 Windows)无法更新显示,就会出现此问题。如果操作系统检测到这一点,它会终止 GPU 计算。您可以尝试运行较小块的计算,或者配置超时检测与恢复 (TDR),以便在系统无响应时仍允许计算完成。更多信息可参见 此 NVIDIA 主题 或 微软网页。微软还提供了关于需要更改的注册表项的文档。
我的问题未列出¶
尝试为您的 CPU 安装驱动程序并在 CPU 平台上运行(见上文链接)。CPU 平台的性能较低,但通常更稳定。如果这仍无法解决问题,请在 带有 Cytoscape 标签的 StackOverflow 帖子 中寻求帮助。