<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<!--[if !mso]><style>v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style><![endif]--><style><!--
/* Font Definitions */
@font-face
        {font-family:PMingLiU;
        panose-1:2 2 5 0 0 0 0 0 0 0;}
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:"\@PMingLiU";
        panose-1:2 1 6 1 0 1 1 1 1 1;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
p.xmsonormal, li.xmsonormal, div.xmsonormal
        {mso-style-name:x_msonormal;
        margin:0in;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
span.EmailStyle22
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="#0563C1" vlink="#954F72" style="word-wrap:break-word">
<div class="WordSection1">
<p class="MsoNormal">Thank you for the reply. I have another question regarding Horovod.
<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I can now build horovod with mvapich2-gdr at OSC but I encounter an error when I run pytorch benchmark with 2 GPUs on single node:<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">[p0235.ten.osc.edu:mpi_rank_1][MPIDI_CH3I_MRAIL_Rndv_transfer_device_ipc] src/mpid/ch3/channels/mrail/src/gen2/ibv_cuda_rndv.c:412: cudaEventRecord failed: Invalid argument (22)<o:p></o:p></p>
<p class="MsoNormal">terminate called after throwing an instance of 'std::system_error'<o:p></o:p></p>
<p class="MsoNormal">  what():  Resource deadlock avoided<o:p></o:p></p>
<p class="MsoNormal">[p0235.ten.osc.edu:mpi_rank_1][error_sighandler] Caught error: Aborted (signal 6)<o:p></o:p></p>
<p class="MsoNormal">srun: error: p0235: task 1: Aborted (core dumped)<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">The commands I tried:<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">LD_PRELOAD=$OSC_MVAPICH2_LIB/libmpi.so srun -n 2 --gpu_cmode=shared --cpu-bind=none  python pytorch_synthetic_benchmark.py --batch-size=64 --model=resnet50<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">or<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">LD_PRELOAD=$OSC_MVAPICH2_LIB/libmpi.so srun -n 2 --gpu_cmode=shared --cpu-bind=none $MPICH_HOME/libexec/osu-micro-benchmarks/get_local_rank  python pytorch_synthetic_benchmark.py --batch-size=64 --model=resnet50<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">The MV2 variables used:<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">MV2_HOMOGENEOUS_CLUSTER=1<o:p></o:p></p>
<p class="MsoNormal">MV2_CPU_BINDING_POLICY=hybrid<o:p></o:p></p>
<p class="MsoNormal">MV2_USE_GDRCOPY=1<o:p></o:p></p>
<p class="MsoNormal">MV2_USE_CUDA=1<o:p></o:p></p>
<p class="MsoNormal">MV2_IBA_HCA=mlx5_0:mlx5_2<o:p></o:p></p>
<p class="MsoNormal">MV2_GPUDIRECT_GDRCOPY_LIB=/usr/lib64/libgdrapi.so<o:p></o:p></p>
<p class="MsoNormal">MV2_USE_RDMA_CM=0<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">The packages installed:<o:p></o:p></p>
<p class="MsoNormal">horovod                 0.22.1<o:p></o:p></p>
<p class="MsoNormal">torch                   1.9.0<o:p></o:p></p>
<p class="MsoNormal">torchvision             0.10.0<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">-ZQ<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal" style="margin-bottom:12.0pt"><b><span style="font-size:12.0pt;color:black">From:
</span></b><span style="font-size:12.0pt;color:black">Anthony, Quentin G. <anthony.301@buckeyemail.osu.edu><br>
<b>Date: </b>Saturday, July 17, 2021 at 11:01 AM<br>
<b>To: </b>mvapich-discuss@lists.osu.edu <mvapich-discuss@lists.osu.edu>, You, Zhi-Qiang <zyou@osc.edu><br>
<b>Subject: </b>Re: [Mvapich-discuss] Cannot build Horovod with mvapich2-gdr<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt;color:black">Hey Zhi-Qiang,<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt;color:black"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt;color:black">Currently, we recommend manually updating the prefix, exec_prefix, sysconfdir, includedir, and libdir paths in mpicc and mpicxx. <o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt;color:black"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt;color:black">As long as your loaded CUDA module version matches that of the RPM, the CUDA prefix paths should be correct for your system. If that's not the case, let us know and we can generate you a new RPM
 with the correct CUDA version and prefix.<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt;color:black"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt;color:black">Thanks,<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt;color:black">-Quentin<o:p></o:p></span></p>
</div>
<div class="MsoNormal" align="center" style="text-align:center">
<hr size="0" width="100%" align="center">
</div>
<div id="divRplyFwdMsg">
<p class="MsoNormal"><b><span style="color:black">From:</span></b><span style="color:black"> Mvapich-discuss <mvapich-discuss-bounces+anthony.301=osu.edu@lists.osu.edu> on behalf of You, Zhi-Qiang via Mvapich-discuss <mvapich-discuss@lists.osu.edu><br>
<b>Sent:</b> Friday, July 16, 2021 1:31 PM<br>
<b>To:</b> mvapich-discuss@lists.osu.edu <mvapich-discuss@lists.osu.edu><br>
<b>Subject:</b> Re: [Mvapich-discuss] Cannot build Horovod with mvapich2-gdr</span>
<o:p></o:p></p>
<div>
<p class="MsoNormal"> <o:p></o:p></p>
</div>
</div>
<div>
<div>
<p class="xmsonormal">Hello, any update? <o:p></o:p></p>
<p class="xmsonormal"> <o:p></o:p></p>
<p class="xmsonormal">-ZQ<o:p></o:p></p>
<p class="xmsonormal"> <o:p></o:p></p>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="xmsonormal" style="margin-bottom:12.0pt"><b><span style="font-size:12.0pt;color:black">From:
</span></b><span style="font-size:12.0pt;color:black">Mvapich-discuss <mvapich-discuss-bounces@lists.osu.edu> on behalf of You, Zhi-Qiang via Mvapich-discuss <mvapich-discuss@lists.osu.edu><br>
<b>Date: </b>Saturday, July 10, 2021 at 3:13 AM<br>
<b>To: </b>mvapich-discuss@lists.osu.edu <mvapich-discuss@lists.osu.edu><br>
<b>Subject: </b>[Mvapich-discuss] Cannot build Horovod with mvapich2-gdr</span><o:p></o:p></p>
</div>
<p class="xmsonormal">Hello,<o:p></o:p></p>
<p class="xmsonormal"> <o:p></o:p></p>
<p class="xmsonormal">I followed the user guide[1] to build horovod with mvapich2-gdr at OSC and got this CMake error:<o:p></o:p></p>
<p class="xmsonormal"> <o:p></o:p></p>
<p class="xmsonormal">$ module reset<o:p></o:p></p>
<p class="xmsonormal">$ module load mvapich2-gdr/2.3.5 cmake<o:p></o:p></p>
<p class="xmsonormal">$ HOROVOD_GPU_OPERATIONS=MPI HOROVOD_CUDA_HOME=$CUDA_HOME HOROVOD_WITH_MPI=1 pip install --no-cache-dir --ignore-installed horovod<o:p></o:p></p>
<p class="xmsonormal">[ .. skipped .. ]<o:p></o:p></p>
<p class="xmsonormal">-- The CXX compiler identification is GNU 8.4.0<o:p></o:p></p>
<p class="xmsonormal">    -- Check for working CXX compiler: /apps/gnu/8.4.0/bin/c++<o:p></o:p></p>
<p class="xmsonormal">    -- Check for working CXX compiler: /apps/gnu/8.4.0/bin/c++ - works<o:p></o:p></p>
<p class="xmsonormal">    -- Detecting CXX compiler ABI info<o:p></o:p></p>
<p class="xmsonormal">    -- Detecting CXX compiler ABI info - done<o:p></o:p></p>
<p class="xmsonormal">    -- Detecting CXX compile features<o:p></o:p></p>
<p class="xmsonormal">    -- Detecting CXX compile features - done<o:p></o:p></p>
<p class="xmsonormal">    -- Build architecture flags: -mf16c -mavx -mfma<o:p></o:p></p>
<p class="xmsonormal">    -- Using command /fs/ess/scratch/PZS0710/zyou/tmp/horovod/bin/python3<o:p></o:p></p>
<p class="xmsonormal">    CMake Error in /tmp/pip-install-xt_qt24z/horovod_6386bb2d1fc94c1f9518143ed589a550/build/temp.linux-x86_64-3.6/RelWithDebInfo/CMakeFiles/CMakeTmp/CMakeLists.txt:<o:p></o:p></p>
<p class="xmsonormal">      Imported target "MPI::MPI_CXX" includes non-existent path<o:p></o:p></p>
<p class="xmsonormal">    <o:p></o:p></p>
<p class="xmsonormal">        "/usr/local/cuda-11.0/include"<o:p></o:p></p>
<p class="xmsonormal">    <o:p></o:p></p>
<p class="xmsonormal">      in its INTERFACE_INCLUDE_DIRECTORIES.  Possible reasons include:<o:p></o:p></p>
<p class="xmsonormal">[ .. skipped .. ]<o:p></o:p></p>
<p class="xmsonormal"> <o:p></o:p></p>
<p class="xmsonormal">I noticed "/usr/local/cuda-11.0/include” from the flags in mpi wrappers:<o:p></o:p></p>
<p class="xmsonormal"> <o:p></o:p></p>
<p class="xmsonormal">$ grep final.*flags= `which mpicxx`<o:p></o:p></p>
<p class="xmsonormal">final_cxxflags=" -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches   -m64 -mtune=generic "<o:p></o:p></p>
<p class="xmsonormal">final_cppflags=" -I/usr/local/cuda-11.0/include  -I/usr/local/cuda-11.0/include"<o:p></o:p></p>
<p class="xmsonormal">final_ldflags=" -L/usr/local/lib -lcuda -L/usr/local/cuda-11.0/lib64/stubs -L/usr/local/cuda-11.0/lib64 -lcudart -lrt -lstdc++ -Wl,-rpath,/usr/local/cuda-11.0/lib64 -Wl,-rpath,XORIGIN/placeholder -L/usr/local/software/slurm/current/lib64/ 
 -fPIC -m64 "<o:p></o:p></p>
<p class="xmsonormal">    final_ldflags="${final_ldflags} -L/usr/local/cuda-11.0/lib64/ -L/usr/local/lib -lcuda -L/usr/local/cuda-11.0/lib64/stubs -L/usr/local/cuda-11.0/lib64 -lcudart -lrt -lstdc++ -Wl,-rpath,/usr/local/cuda-11.0/lib64 -Wl,-rpath,XORIGIN/placeholder
 -L/usr/local/software/slurm/current/lib64/  -fPIC -m64 -L/usr/local/software/slurm/current/lib"<o:p></o:p></p>
<p class="xmsonormal"> <o:p></o:p></p>
<p class="xmsonormal">At OSC, we use rpm2cpio method to install mvapich2-gdr. I know using rpm with –prefix can fix part of the flags but it seems no other method to update cuda path automatically. Besides manual modifications to the flags in the wrappers,
 is there other way to let me proceed to build horovod?<o:p></o:p></p>
<p class="xmsonormal"> <o:p></o:p></p>
<p class="xmsonormal">-ZQ<o:p></o:p></p>
<p class="xmsonormal"> <o:p></o:p></p>
</div>
</div>
</div>
</body>
</html>