本地和远程渲染图形

从同一本地机器上的批处理或交互式客户端启动 Simcenter STAR-CCM+ 服务器时,Simcenter STAR-CCM+ 默认使用本地图形资源在客户端中渲染图形。为了在其他情况下也能保证较高性能,还提供了备选渲染选项,包括独立渲染进程。

Simcenter STAR-CCM+ 必须解决几个问题才能从几何或求解数据渲染图形:
  1. 在何处运行渲染进程
  2. 渲染进程中使用哪种方法
  3. 激活高级渲染时分配多少线程
  4. 在有多个可用的 GPU 时使用哪个 GPU(仅 Linux)
渲染进程的位置
相关命令行参数:-rr(请参见下面的渲染器位置和方法的命令行选项
渲染进程(渲染器)可以在客户端中运行(交互式或批处理),也可以由服务器单独启动。或者,可以选择在指定的远程服务器上运行专用渲染进程。可以为多个客户端保留该专用渲染进程,或针对单个客户端启动特别渲染进程(并在客户端断开连接时关闭)。
如果在启动 Simcenter STAR-CCM+ 时不使用 -rr 参数,图形渲染在 Java 虚拟机中进行(交互式或批处理)。如果使用 -rr 服务器Simcenter STAR-CCM+ 将在同一机器上与服务器一起启动渲染器。
有关远程渲染的额外信息,请参见下面的远程渲染的其他信息
常规渲染方法
相关命令行参数:-graphics / -rgraphics / -agraphics(请参见下面的渲染器位置和方法的命令行选项
如果发生渲染的机器专用图形硬件可用,Simcenter STAR-CCM+ 默认使用该硬件。如果有多个可用图形卡,可以选择使用哪个图形卡。如果没有图形硬件,Simcenter STAR-CCM+ 使用两个 Mesa 图形库之一进行基于软件的渲染。
高级渲染线程
相关命令行参数:-rrthreads / -arthreads(请参见高级渲染工作流程
激活高级渲染时,Simcenter STAR-CCM+ 将接受用于设置分配给高级渲染进程的线程数的参数。高级渲染始终是一种在本地客户端或单独的渲染服务中运行的基于软件的计算。
选择特定 GPU(仅 Linux)
相关命令行参数:-rgpu-agpu(请参见使用多个 GPU
在具有多个 GPU 的 Linux 系统中,Simcenter STAR-CCM+ 的每个实例会利用不同的 GPU 来显著提高此类环境中的渲染性能。要激活该图形功能,使用命令行选项 -rgpu <选项>,该选项适用于本地交互式或批处理会话或在远程服务器上渲染时适用。

渲染器位置和方法的命令行选项

渲染进程的位置在使用 -rr 参数启动 Simcenter STAR-CCM+ 服务器的命令行中设置。提供给 -rr 参数的选项将决定位置。

用于渲染图形的方法也是在 Simcenter STAR-CCM+ 中使用以下三个参数之一设置的:-graphics-rgraphics-agraphics(取决于位置)。

渲染器位置 -rr 指定 描述 方法选择器 方法选择
客户端 (Java VM) 不使用 如果启动服务器时不使用 -rr 参数,Simcenter STAR-CCM+ 将在 Java 虚拟机中运行渲染器进程。 -graphics <option>
  • auto -(默认)首选 Mesa OpenGL 上支持的原生 OpenGL;该选项的效果与不使用任何图形选项的效果一样。
  • egl - 强制使用 EGL 上的原生 OpenGL(仅适用于 Linux 上的服务器端和远程渲染)
  • native - 强制使用原生 OpenGL
  • mesa - 强制使用 Mesa OpenGL;使用原有 Mesa 图形驱动程序 LLVMpipe。
  • mesa_swr – 强制使用性能优于原有选项的 OpenSWR Mesa 驱动程序。此选项需要 AVX CPU 指令集支持(2012 年之后发布的所有 CPU 都支持此指令集)。
服务器端 -rr 服务器 在服务器而非客户端上运行渲染器(服务器端渲染)。这实际意味着服务器在同一机器上作为同伴进程生成渲染器。 -rgraphics <选项>
特别远程渲染 -rr <主机名> 在主机名指定的主机上启动服务器的特别渲染器。服务器结束时,特别渲染器也结束。 -agraphics <选项>
专用远程渲染 -rr <主机名>:<端口> 连接到已在指定<端口><主机名>上运行的渲染器。要使用该选项,必须先使用 starrenderer 命令在<主机名>上手动启动渲染器。starrenderer 命令返回所需的<主机名>:<端口>字符串。 -rgraphics <选项>

远程渲染的其他信息

在某些情况下,可以通过在服务器的不同主机上运行渲染器来提高计算性能。通常,运行渲染器的机器具有大量主内存和强大的图形硬件。下面是适用该选项的示例:
  • 在集群上的批处理运行中,可以分配一个 CPU 进行渲染,并使用其他 CPU 求解模拟。
  • 在没有图形卡的机器上交互式运行,可以在具有可用硬件的不同机器上请求渲染。
有两个用于远程渲染的选项:
  • 专用渲染器:在远程机器上手动启动渲染器并记录进程返回的端口号(用于启动主 Simcenter STAR-CCM+ 模拟)
  • 特别渲染器:启动主模拟时,指定远程主机,并由 Simcenter STAR-CCM+ 以特别方式在主机上动态启动渲染器。远程渲染器生存期与启动它的主 Simcenter STAR-CCM+ 服务器相同。当 Simcenter STAR-CCM+ 会话退出时,渲染器同时退出。
必须满足特定条件才能使用特别方法。
  • 主模拟服务器必须能够访问使用没有密码的 SSH 的远程渲染器机器
  • 服务器机器和渲染器机器必须共用包含 Simcenter STAR-CCM+ 安装的文件系统。
  • 不得有防火墙干扰客户端服务器和渲染器进程的通信。

特别渲染的典型用例是包含具有 GPU 和大量内存的可视化节点的 Linux 群集。该群集的用户可以将 -rr [hostname_of_visualization_node] 添加到他们的 Simcenter STAR-CCM+ 作业提交参数中。该方法有两大优势:

  • 运行过程中生成的任何硬拷贝由(硬件加速)可视化节点生成。这样就可以在不降低求解器速度的情况下以高分辨率生成更多硬拷贝。
  • 生成硬拷贝所需的所有内存都将从运行 rank0 的机器上转移到可视化节点中(通常有足够的内存)。群集中的内存消耗更加均匀:不仅提高了利用率,而且可在相同数量的计算节点上执行更多作业。
专用渲染器启动命令
  • 在 Windows 系统上:[INSTALLDIR]\star\bin\starrenderer.bat
  • 在 Linux 系统上:[INSTALLDIR]/star/bin/starrenderer

接受的命令行参数为:

  • -mode \{service, single\} — 指定服务仅接受单个客户端还是多个客户端。在单个模式下,每次连接客户端再断开后,或者超时五分钟后没有任何客户端连接,进程将关闭。默认模式为 service
  • -rgraphics \{auto, egl, native, mesa, mesa_swr\} - 指定应当使用本地(硬件加速)OpenGL 还是基于软件的 (Mesa) 渲染。egl 选项可用于 GPU 加速渲染,无需运行 X 会话(例如,使用 ssh 会话)。自动选项尝试自动确定最佳设置,并且是默认设置。mesa_swr 选项通常当必须采用基于软件的渲染时性能更佳。
  • -rrthreads RRTHREADS — 将用于基于软件的渲染(Mesa/高级渲染)的 CPU 数量设为 RRTHREADS。默认值为 1

启动后,服务将打印主机和端口信息,以便在配置另一个客户端使用此渲染服务时使用。

检查远程渲染
要检查远程渲染是否用于 Simcenter STAR-CCM+ 会话,使用场景的图形报告:
  • 右键单击场景节点或场景显示,然后选择报告

图形报告将以单独的选项卡形式显示在输出窗口中。如果报告以 ***Report generated remotely*** 结束,则远程渲染处于活动状态。

结束远程渲染进程
如果在单一模式下启动远程渲染进程,它在 Simcenter STAR-CCM+ 会话使用它时自动存在。同样,特别渲染器也会打开并存在,无需执行任何操作。
关闭专用渲染器:
  • 在 Windows 上,使用任务管理器。
  • 在 Linux 上,使用 kill 命令。
不通过命令行使用远程渲染
在对话框中,将渲染下拉列表设为:
  • 专用服务 — 用于选择正在运行渲染服务的主机和端口。在远程机器上使用 starrenderer 启动渲染服务时,将显示主机和端口信息。

    如果知道主机但不知道端口号,则可以在主机中输入主机名,然后单击扫描。所有可用渲染服务将在端口字段的端口下拉列表中显示。

如果使用 -rrthreads 指定的线程数(默认为 1)与通过 -np 指定的服务器进程数(默认为 1)之和大于可用 CPU 资源的数量,使用远程渲染可能会导致托管服务器的机器上发生争用。例如,在具有 12 个 CPU 的机器上使用选项 -np 12 -rrthreads 6 运行 Simcenter STAR-CCM+ 服务器可能会对求解器和远程渲染性能产生负面影响。如果在场景中启用了高级渲染并在服务器迭代求解时使用远程渲染,这种资源分配尤为重要。