HSPICE的多线程及并行计算命令行参数
HSPICE中有两种类型的并行计算。一种是将单个任务在CPU的多个线程中并行计算,另一种是将多个任务并行在多个CUP核心中并行计算。前者称为多线程(Multithreading ,mt),后者称为分布式处理(Distributed Processing,DP)。
多线程计算
PrimeSim HSPICE 可在单个节点内使用多个内核或处理器,使用多线程进行模型评估和矩阵求解,从而显著提高仿真性能。在主要由有源器件组成的电路中,模型评估花费的时间最多。对于有许多线性电阻器和电容器的设计(如后布局电路),矩阵求解耗时最多。使用多线程可以提高模型评估和矩阵求解的性能。
-每两个内核需要一个许可证。
-如果指定的线程数大于内核数,多线程会将线程数减少到内核数。例如,如果在 8 核机器上指定”-mt 12″,PrimeSim HSPICE 将发出警告并将其更改为”-mt 8″。
举个栗子,运行四个线程(需要两个许可证):
hspice -mt 4 -i input.sp -o output
性能改进评估
可以从以下等式了解使用了多线程后的性能提升:
Tmt=Tserial + Tparallel/Ncpu + Toverhead
其中:
•Tserial 代表 PrimeSim HSPICE 的非线程计算。
•Tparallel 代表线程化的 PrimeSim HSPICE 计算。
•Ncpu 是使用的CPU数量。
•Toverhead 是多线程的开销。通常,这代表总运行时间的一小部分。
例如,对于使用LEVEL 49的151级NAND环形振荡器,如果在多CPU机器上使用两个线程运行,Tparallel 约为 T1cpu(与单 CPU 相关的 CPU 时间)的80%。理想情况下,假设 Toverhead=0,你可以实现的加速比为: T1cpu/(0.2T1cpu + 0.8T1cpu/2cpus)=1.67
对于中大型电路,典型的 Tparallel 值为 0.6 至 0.7。
增加更多线程并不一定意味着模拟会更快。如果活动设备或元件不足,少量线程有时可能运行得更快。
Intel 超线程技术的影响
当每个线程执行不同类型的操作并且处理器上的资源未被充分利用时,Intel 的超线程(HT)技术会特别有效,然而,PrimeSim HSPICE 不符合这些条件。PrimeSim HSPICE 代码的线程部分主要执行在每个线程上的重复的高效率浮点计算操作,并利用大部分可用资源。 通过禁用 HT 技术,你可以获得更高的性能。如果启用 HT 后运行,而实际使用的线程数少于物理核心数,多线程的性能可能会受到影响。如果线程调度器将两个线程分配给一个物理核心,而忽略其他核心,多线程性能也会受到影响。
!!!建议在 BIOS中关闭超线程功能。!!!
分布式处理(Distributed Processing,DP)
在分布式处理的情况下,可以用以下的命令行参数:
hspice -i xxx.sp -dp 4
同时运行多线程及分布式处理
可以同时运行多线程和分布式处理(DP)。多线程可以加速大型电路的仿真,而分布式处理可以加速多任务仿真(如.ALTER,蒙特卡洛和数据扫描)。如果有一个包含多个任务的大型电路,多线程加上分布式处理可以极大地提升性能。
ps:只有在 Linux 平台上才能同时运行 DP 和多线程。
以下是同时使用多线程和分布式处理的命令用法:
hspice -dp process_count [-dpconfig configuration_file] -mt thread_count -i input.sp -o output_file
其中:
• process_count 是一个非零整数,用于定义可用的子进程数量的初始值。
• thread_count 是模型评估和矩阵求解中使用的最大线程数。DP 中的每个进程使用这里定义的相同数量的线程。
• -dpconfig configuration_file 是可选的,如果作业在本地机器上运行,可以省略。
检出的许可证数量等于线程数除以 2 再乘以 DP 的数量。
例如,-dp 10 -mt 4 将检出 20 个许可证。
DP 在 CPU 资源分配中具有优先权。只有在满足 DP 的 process_count 后还有剩余的 CPU 资源时,PrimeSim HSPICE 才会触发多线程。 如果多线程可用的核心数量(在 -dp 之后)不足以满足指定的线程数,PrimeSim HSPICE 会将线程数降低到可用核心的数量。
示例 1: hspice -dp 6 -mt 4 -i input.sp -o input
Core=8
Monte=1000
Total multiprocessed jobs=6
由于只剩下 2 个核心,且各进程的线程数必须相等,线程数重置为 1。
示例 2:
hspice -dp 6 -mt 4 -i input.sp -o input
Core=18
Monte=1000
Total multiprocessed jobs=6
由于有足够的核心支持每个进程 3 个线程,线程数重置为 3。
示例 3:
hspice -dp 2 -mt 4 -i input.sp -o input
Core=4
Monte=1000
Total multiprocessed jobs=2
线程数重置为 2。
PrimeSim HSPICE Precision Parallel (HPP)
PrimeSim HSPICE 利用最新的多核技术加速预布局和布局后电路瞬态仿真,特别适用于中到大型模块,包括 PLL、ADC、DAC、SERDES 以及其他超过 1000 万元件的全混合信号电路。 PrimeSim HSPICE 精确并行技术(HPP)能够将性能从一个核心扩展到八个核心甚至更多,而且不会丧失精度。
HPP 可通过在命令行中添加 -hpp 来激活,用于单核运行,并且可以通过在命令行中添加 -hpp 和 -mt N(N 是线程数)与多线程结合使用,进一步加速瞬态分析仿真。HPP 是一个瞬态引擎,因此它不适用于 .AC、.DC 或其他分析。 在使用多线程运行 -hpp 多核算法时,每两个线程需要一个 PrimeSim HSPICE 许可证。
例如:
hspice -mt 8 -hpp -i input.sp -o output.lis
将使用四个 PrimeSim HSPICE 许可证。
在 Windows 平台上,HPP 的可扩展性取决于机器配置。个人笔记本电脑显示出较差的可扩展性,而配备 Xeon 的 Windows 服务器则能实现更高的可扩展性。
HPP 状态报告在 .lis 文件中 当您运行 HPP 时,.lis 文件会显示仿真状态和 CPU 利用率的实时更新。
例如:
98.8% time = 34.597003 us ( etc = 56.4 sec, ett = 2:16:41 )
( wall = 2:15:44 cpu = 1:02:14:45 s=11.6008 )
HPP 的使用限制
以下功能和命令不受支持:
在 HPP 中,只支持以下模型的模板:
•BSIM3
•BSIM4
•PSP
•BSIM-CMG
在 HPP 中,IVTH 功能和 LX142() 只支持以下模型:
•BSIM4
•BSIM-CMG
•MOS101
参考来源
以上内容整理于:《PrimeSim™ HSPICE® User Guide: Basic Simulation and Analysis》