本文介绍hpcdld 为hyper tuner工具集中deadlock检测器。

1 使用说明
    本工具作为mpi场景下的命令行采集工具，需要用户提供可用的mpi运行环境，集群shared folder。本工具免安装，解压目录结构如下:
    --Hyper-Tuner_linux_HPC-Tools
    ----check_latency_bandwidth
    ----hpccollector
	----hpcdld
    ----hpcmanager
    ----hpcreport
    ----devkit
    ----devkit_lib
    ----readme.txt
    ----hpcmanager_readme.txt
    ----stream_benchmark.sh
    hpcdld为工具程序,可使用-h/--help查看帮助。

2 参数说明
    -h,--help          					帮助功能，提供参数和用法的简单说明。
	-mp, --mpirun-path 					指定mpirun的安装路径
    -n,--ranks         					执行并行进程数
    -i,--master-ip        				节点IP地址
    -sf, --shared-folder    			共享目录
    -host, --host 						host列表
    -r,--raw-collection-data-dir        指定数据集合目录

3 任务信息查询
   
   使用示例如下：
	  ./hpcdld -mp /home/lyn/installed/OPENMPI/bin/mpirun -sf /home/nfs_share_folder_xs --host 90.90.154.228:2,90.90.154.75:2 -i 90.90.154.228 /home/nfs_share_folder_xs/matrix_multiply_deadlock_ompi
	  【注】--host指定的node列表的第一个节点IP须和-i/--master-ip参数指定的IP地址一致，且-i/--master-ip须为本机IP地址
   查询结果如下：
    
	------------- Deadlock Detected! -------------
	ranks 0-1,3:
	/home/zxm/PerfToolsResearch-hpctool_1_18_0_rc1/hpctool/lib64/python/utest/data/testapps/mpi/matrix_multiply_deadlock.cpp:191
	ranks 2:
	/home/zxm/PerfToolsResearch-hpctool_1_18_0_rc1/hpctool/lib64/python/utest/data/testapps/mpi/matrix_multiply_deadlock.cpp:192
	----------------------------------------------

	hpctool <all> :
	
	当前为交互模式，等待用户选择rank编号
	例如：查看rank 2的详细信息
	hpctool <all> : select 2
	hpctool <2> : bt
	hpctool <2> (gdb) #0  0x0000fffff617a198 in nanosleep () from /lib64/libc.so.6
	hpctool <2> #1  0x0000fffff61a2b98 in usleep () from /lib64/libc.so.6
	hpctool <2> #2  0x0000fffff65ef794 in ompi_mpi_finalize ()
	hpctool <2>    from /opt/wjx/soft/openmpi/lib/libmpi.so.40
	hpctool <2> #3  0x0000fffff671b314 in MPI_Finalize ()
	hpctool <2>    from /home/zxm/deadlock_tool/Hyper-Tuner_linux_HPC-Tools/devkit/../devkit_lib/lib64/libmpicollector_ompi.so
	hpctool <2> #4  0x0000000000401090 in main (argc=1, argv=0xffffffffe208)
	hpctool <2>     at /home/zxm/PerfToolsResearch-hpctool_1_18_0_rc1/hpctool/lib64/python/utest/data/testapps/mpi/matrix_multiply_deadlock.cpp:192
	
	输入“select 2” hpctool后的尖括号内的数字变为2，表示当前为rank 2，再次输入bt（意为backtrace）回车，即看到rank 2的栈信息。

3 取消任务
  取消任务即取消正在运行的任务，不管任务处于采集还是等待用户选择rank状态，任务都将被丢弃。因命令行任务只支持同时只有一个任务在运行，即使用ctrl+c取消当前正在执行的任务


