Intel ਟਰੇਸ ਐਨਾਲਾਈਜ਼ਰ ਅਤੇ ਕੁਲੈਕਟਰ ਨਾਲ ਸ਼ੁਰੂਆਤ ਕਰੋ
Intel® ਟਰੇਸ ਐਨਾਲਾਈਜ਼ਰ ਅਤੇ ਕੁਲੈਕਟਰ ਨਾਲ ਸ਼ੁਰੂਆਤ ਕਰੋ
ਇਸ ਸ਼ੁਰੂਆਤੀ ਦਸਤਾਵੇਜ਼ ਅਤੇ ਪਹਿਲਾਂ ਤੋਂ ਇਕੱਠੇ ਕੀਤੇ ਟਰੇਸ ਦੀ ਵਰਤੋਂ ਕਰੋ file Intel® ਟਰੇਸ ਐਨਾਲਾਈਜ਼ਰ ਅਤੇ ਕੁਲੈਕਟਰ ਦੇ ਨਾਲ ਇੱਕ ਬੁਨਿਆਦੀ MPI ਪ੍ਰਦਰਸ਼ਨ ਵਿਸ਼ਲੇਸ਼ਣ ਦੁਆਰਾ ਚੱਲਣ ਲਈ।
ਇੰਟੇਲ ਟਰੇਸ ਐਨਾਲਾਈਜ਼ਰ ਅਤੇ ਕੁਲੈਕਟਰ ਮੈਸੇਜ ਪਾਸਿੰਗ ਇੰਟਰਫੇਸ (MPI) ਦੀ ਵਰਤੋਂ ਕੁਸ਼ਲਤਾ ਦੀ ਪੜਚੋਲ ਕਰਨ ਅਤੇ ਸੰਚਾਰ ਹੌਟਸਪੌਟਸ, ਸਿੰਕ੍ਰੋਨਾਈਜ਼ੇਸ਼ਨ ਰੁਕਾਵਟਾਂ, ਅਤੇ ਲੋਡ ਸੰਤੁਲਨ ਦੀ ਪਛਾਣ ਕਰਨ ਵਿੱਚ ਮਦਦ ਕਰਦਾ ਹੈ। ਉਤਪਾਦ ਬਾਰੇ ਵਧੇਰੇ ਜਾਣਕਾਰੀ ਲਈ, ਇੰਟੇਲ ਟਰੇਸ ਐਨਾਲਾਈਜ਼ਰ ਅਤੇ ਕੁਲੈਕਟਰ ਉਤਪਾਦ ਪੰਨਾ ਦੇਖੋ।
ਇੰਟੇਲ ਟਰੇਸ ਐਨਾਲਾਈਜ਼ਰ ਅਤੇ ਕੁਲੈਕਟਰ ਨੂੰ ਡਾਊਨਲੋਡ ਕਰੋ
- Intel® oneAPI HPC ਟੂਲਕਿੱਟ ਦੇ ਹਿੱਸੇ ਵਜੋਂ
- ਇੱਕ ਸਟੈਂਡਅਲੋਨ ਟੂਲ ਵਜੋਂ
ਪੂਰਵ-ਸ਼ਰਤਾਂ
- Intel ਟ੍ਰੇਸ ਐਨਾਲਾਈਜ਼ਰ ਅਤੇ ਕੁਲੈਕਟਰ ਨੂੰ ਚਲਾਉਣ ਤੋਂ ਪਹਿਲਾਂ, ਯਕੀਨੀ ਬਣਾਓ ਕਿ ਤੁਸੀਂ ਨਵੀਨਤਮ Intel® MPI ਲਾਇਬ੍ਰੇਰੀ ਅਤੇ Intel® oneAPI DPC++/C++ ਕੰਪਾਈਲਰ ਜਾਂ Intel® Fortran ਕੰਪਾਈਲਰ ਸਥਾਪਤ ਕੀਤਾ ਹੈ।
- ਇਹ ਕੰਪਾਈਲਰਾਂ, Intel MPI ਲਾਇਬ੍ਰੇਰੀ, ਅਤੇ Intel ਟਰੇਸ ਐਨਾਲਾਈਜ਼ਰ ਅਤੇ ਕੁਲੈਕਟਰ ਲਈ ਲੋੜੀਂਦੇ ਵਾਤਾਵਰਣ ਵੇਰੀਏਬਲ ਸੈੱਟ ਕਰਦਾ ਹੈ, ਅਤੇ ਤੁਸੀਂ ਆਪਣੀਆਂ ਐਪਲੀਕੇਸ਼ਨਾਂ ਨੂੰ ਟਰੇਸ ਕਰਨ ਲਈ ਤਿਆਰ ਹੋ।
- ਹੋਰ ਜਾਣਕਾਰੀ ਲਈ, ਵੇਖੋ: Intel® oneAPI HPC ਟੂਲਕਿੱਟ ਸਿਸਟਮ ਲੋੜਾਂ।
ਵਰਕਫਲੋ ਨੂੰ ਸਮਝੋ
- ਆਪਣੀ ਅਰਜ਼ੀ ਦਾ ਪਤਾ ਲਗਾਓ
- ਸਭ ਤੋਂ ਵੱਧ ਸਰਗਰਮ MPI ਫੰਕਸ਼ਨਾਂ ਦਾ ਵਿਸ਼ਲੇਸ਼ਣ ਕਰੋ
- ਸਮੱਸਿਆ ਵਾਲੇ ਪਰਸਪਰ ਪ੍ਰਭਾਵ ਦੀ ਪਛਾਣ ਕਰੋ
- ਸਮੱਸਿਆ ਪੈਦਾ ਕਰਨ ਵਾਲੇ ਫੰਕਸ਼ਨ ਨੂੰ ਬਦਲ ਕੇ ਆਪਣੀ ਐਪਲੀਕੇਸ਼ਨ ਦੀ ਕਾਰਗੁਜ਼ਾਰੀ ਵਿੱਚ ਸੁਧਾਰ ਕਰੋ
ਆਪਣੀ MPI ਐਪਲੀਕੇਸ਼ਨ ਨੂੰ ਟਰੇਸ ਕਰੋ
ਇੱਕ ਟਰੇਸ ਤਿਆਰ ਕਰੋ file ਹੇਠਾਂ ਦਿੱਤੇ ਐਪਲੀਕੇਸ਼ਨ ਵਿਹਾਰ ਵਿਸ਼ਲੇਸ਼ਣ ਲਈ ਇਵੈਂਟ ਲੌਗ ਇਕੱਠੇ ਕਰਨ ਲਈ।
- OneAPI ਇੰਸਟਾਲੇਸ਼ਨ ਡਾਇਰੈਕਟਰ ਤੋਂ setvars ਸਕ੍ਰਿਪਟ ਚਲਾ ਕੇ Intel® ਟਰੇਸ ਐਨਾਲਾਈਜ਼ਰ ਅਤੇ ਕੁਲੈਕਟਰ ਨੂੰ ਲਾਂਚ ਕਰਨ ਲਈ ਵਾਤਾਵਰਨ ਸੈਟ ਅਪ ਕਰੋ।
ਨੋਟ ਕਰੋ
ਮੂਲ ਰੂਪ ਵਿੱਚ, Intel ਟਰੇਸ ਐਨਾਲਾਈਜ਼ਰ ਅਤੇ ਕੁਲੈਕਟਰ ਨੂੰ Linux* OS ਲਈ /opt/intel/oneapi/itac ਅਤੇ ਪ੍ਰੋਗਰਾਮ ਵਿੱਚ ਸਥਾਪਤ ਕੀਤਾ ਗਿਆ ਹੈ। Files (x86)\Intel\oneAPI\itac\Windows* OS ਲਈ ਨਵੀਨਤਮ।
ਲੀਨਕਸ 'ਤੇ:
$ ਸਰੋਤ /opt/intel/oneapi/setvars.sh
ਵਿੰਡੋਜ਼ 'ਤੇ:
"ਸੀ:\ਪ੍ਰੋਗਰਾਮ Files (x86)\Intel\oneAPI\setvars.bat” - ਆਪਣੀ MPI ਐਪਲੀਕੇਸ਼ਨ ਚਲਾਓ ਅਤੇ -trace ਵਿਕਲਪ ਨਾਲ ਇੱਕ ਟਰੇਸ ਤਿਆਰ ਕਰੋ।
ਲੀਨਕਸ 'ਤੇ:
$ mpirun -trace -n 4 ./poisson_sendrecv.single
ਵਿੰਡੋਜ਼ 'ਤੇ:
ਐਪ ਨੂੰ ਕੰਪਾਇਲ ਕਰੋ ਅਤੇ ਟਰੇਸ ਇਕੱਠਾ ਕਰੋ।
Intel oneAPI DPC++/C++ ਕੰਪਾਈਲਰ ਲਈ, ਚਲਾਓ:
> mpiicc -trace poisson_sendrecv.single.c
Intel Fortran ਕੰਪਾਈਲਰ ਲਈ, ਚਲਾਓ:
> mpiifort -trace poisson_sendrecv.single.f
ਇਹ ਸਾਬਕਾample ਇਸ ਲਈ ਇੱਕ ਟਰੇਸ (stf*) ਬਣਾਉਂਦਾ ਹੈample poisson_sendrcv.single MPI ਐਪਲੀਕੇਸ਼ਨ - ਤਿਆਰ ਕੀਤਾ .stf ਖੋਲ੍ਹੋ file ਇੰਟੇਲ ਟਰੇਸ ਐਨਾਲਾਈਜ਼ਰ ਅਤੇ ਕੁਲੈਕਟਰ ਦੇ ਨਾਲ ਇੰਟੇਲ ਟਰੇਸ ਐਨਾਲਾਈਜ਼ਰ।
ਲੀਨਕਸ 'ਤੇ:
$ traceanalyzer ./ poisson_sendrecv.single.stf
ਵਿੰਡੋਜ਼ 'ਤੇ:
traceanalyzer poisson_sendrecv.single.stf
ਨੋਟ ਕਰੋ
ਜਾਂਚ ਦੇ ਉਦੇਸ਼ਾਂ ਲਈ, ਤੁਸੀਂ ਪੂਰਵ-ਇਕੱਠੇ ਕੀਤੇ ਟਰੇਸ ਨੂੰ ਡਾਊਨਲੋਡ ਕਰ ਸਕਦੇ ਹੋ file ਇਸ ਦਸਤਾਵੇਜ਼ ਵਿੱਚ ਵਰਤੇ ਗਏ ਜ਼ਹਿਰ ਲਈ poisson_sendrecv.single.stf ਅਤੇ ਇਸਨੂੰ Intel ਟਰੇਸ ਐਨਾਲਾਈਜ਼ਰ ਅਤੇ ਕੁਲੈਕਟਰ ਨਾਲ ਖੋਲ੍ਹੋ।
ਐੱਸ.ਟੀ.ਐੱਫ file ਸੰਖੇਪ ਪੰਨੇ ਵਿੱਚ ਖੁੱਲ੍ਹਦਾ ਹੈ view, ਜੋ ਤੁਹਾਡੀ ਐਪਲੀਕੇਸ਼ਨ ਦੀ ਕਾਰਗੁਜ਼ਾਰੀ ਬਾਰੇ ਆਮ ਜਾਣਕਾਰੀ ਨੂੰ ਦਰਸਾਉਂਦਾ ਹੈ:ਨੋਟ ਕਰੋ ਇੰਟੇਲ ਟਰੇਸ ਐਨਾਲਾਈਜ਼ਰ ਅਤੇ ਕੁਲੈਕਟਰ ਕਾਰਜਕੁਸ਼ਲਤਾ ਬਾਰੇ ਵਧੇਰੇ ਜਾਣਕਾਰੀ ਲਈ, ਹੋਰ ਜਾਣੋ।
ਸਭ ਤੋਂ ਵੱਧ ਸਰਗਰਮ MPI ਫੰਕਸ਼ਨਾਂ ਦਾ ਵਿਸ਼ਲੇਸ਼ਣ ਕਰੋ
ਇੱਕ MPI ਐਪਲੀਕੇਸ਼ਨ ਵਿਵਹਾਰ ਦਾ ਵਿਸ਼ਲੇਸ਼ਣ ਕਰੋ, ਰੁਕਾਵਟਾਂ ਨੂੰ ਲੱਭੋ ਅਤੇ ਐਪਲੀਕੇਸ਼ਨ ਪ੍ਰਦਰਸ਼ਨ ਨੂੰ ਬਿਹਤਰ ਬਣਾਉਣ ਦੇ ਤਰੀਕੇ ਲੱਭਣ ਲਈ ਸੀਰੀਅਲਾਈਜ਼ੇਸ਼ਨ ਦੀ ਪਛਾਣ ਕਰੋ।
- ਸੰਖੇਪ ਪੰਨੇ ਤੋਂ ਇਵੈਂਟ ਟਾਈਮਲਾਈਨ ਖੋਲ੍ਹੋ view ਚੋਟੀ ਦੇ MPI ਫੰਕਸ਼ਨਾਂ ਦੇ ਡੂੰਘੇ ਵਿਸ਼ਲੇਸ਼ਣ ਲਈ ਜਾਰੀ ਰੱਖੋ > ਚਾਰਟਸ > ਇਵੈਂਟ ਟਾਈਮਲਾਈਨ 'ਤੇ ਕਲਿੱਕ ਕਰਕੇ।
ਚਾਰਟ ਸਮੇਂ ਦੇ ਨਾਲ ਵਿਅਕਤੀਗਤ ਪ੍ਰਕਿਰਿਆ ਦੀਆਂ ਗਤੀਵਿਧੀਆਂ ਨੂੰ ਦਰਸਾਉਂਦਾ ਹੈ।
ਐਪਲੀਕੇਸ਼ਨ ਦਾ ਕੰਮ ਦੁਹਰਾਉਣ ਵਾਲਾ ਹੁੰਦਾ ਹੈ, ਜਿੱਥੇ ਹਰੇਕ ਦੁਹਰਾਅ ਵਿੱਚ ਇੱਕ ਗਣਨਾਤਮਕ ਭਾਗ ਅਤੇ MPI ਸੰਚਾਰ ਹੁੰਦੇ ਹਨ। - ਲੋੜੀਂਦੇ ਸਮੇਂ ਦੇ ਅੰਤਰਾਲ 'ਤੇ ਆਪਣੇ ਮਾਊਸ ਨੂੰ ਖਿੱਚ ਕੇ ਫੋਕਸ ਕਰਨ ਲਈ ਇੱਕ ਸਿੰਗਲ ਦੁਹਰਾਓ ਦੀ ਪਛਾਣ ਕਰੋ ਅਤੇ ਇਸ ਵਿੱਚ ਜ਼ੂਮ ਕਰੋ:
ਟਰੇਸ view ਤੁਹਾਡੇ ਦੁਆਰਾ ਚੁਣੇ ਗਏ ਟਰੇਸ ਦੇ ਅੰਦਰ ਭਾਗ ਦਿਖਾਉਂਦਾ ਹੈ। ਇਵੈਂਟ ਟਾਈਮਲਾਈਨ ਚਾਰਟ ਉਹਨਾਂ ਇਵੈਂਟਾਂ ਨੂੰ ਦਿਖਾਉਂਦਾ ਹੈ ਜੋ ਚੁਣੇ ਗਏ ਦੁਹਰਾਓ ਦੌਰਾਨ ਕਿਰਿਆਸ਼ੀਲ ਸਨ।
- ਹਰੀਜ਼ੱਟਲ ਬਾਰ ਇਹਨਾਂ ਪ੍ਰਕਿਰਿਆਵਾਂ ਵਿੱਚ ਬੁਲਾਏ ਗਏ ਫੰਕਸ਼ਨਾਂ ਨਾਲ ਪ੍ਰਕਿਰਿਆਵਾਂ ਨੂੰ ਦਰਸਾਉਂਦੀਆਂ ਹਨ।
- ਕਾਲੀਆਂ ਲਾਈਨਾਂ ਪ੍ਰਕਿਰਿਆਵਾਂ ਦੇ ਵਿਚਕਾਰ ਭੇਜੇ ਗਏ ਸੰਦੇਸ਼ਾਂ ਨੂੰ ਦਰਸਾਉਂਦੀਆਂ ਹਨ। ਇਹ ਲਾਈਨਾਂ ਭੇਜਣ ਅਤੇ ਪ੍ਰਾਪਤ ਕਰਨ ਦੀਆਂ ਪ੍ਰਕਿਰਿਆਵਾਂ ਨੂੰ ਜੋੜਦੀਆਂ ਹਨ।
- ਨੀਲੀਆਂ ਲਾਈਨਾਂ ਸਮੂਹਿਕ ਕਾਰਵਾਈਆਂ ਨੂੰ ਦਰਸਾਉਂਦੀਆਂ ਹਨ, ਜਿਵੇਂ ਕਿ ਪ੍ਰਸਾਰਣ ਜਾਂ ਓਪਰੇਸ਼ਨਾਂ ਨੂੰ ਘਟਾਉਣਾ।
- ਫਲੈਟ ਪ੍ਰੋ 'ਤੇ ਜਾਓfile ਟੈਬ (ਏ) ਤੁਹਾਡੇ ਦੁਆਰਾ ਕੀਤੇ ਗਏ ਸਮਾਂ ਬਿੰਦੂ ਵਿੱਚ ਚੱਲਣ ਵਾਲੇ ਫੰਕਸ਼ਨਾਂ ਨੂੰ ਨੇੜਿਓਂ ਦੇਖਣ ਲਈ (ਈਵੈਂਟ ਟਾਈਮਲਾਈਨ ਵਿੱਚ ਚੁਣਿਆ ਗਿਆ ਹੈ।
- ਤੁਹਾਡੀ ਐਪਲੀਕੇਸ਼ਨ ਵਿੱਚ MPI ਪ੍ਰਕਿਰਿਆ ਦੀ ਗਤੀਵਿਧੀ ਦਾ ਵਿਸ਼ਲੇਸ਼ਣ ਕਰਨ ਲਈ MPI ਫੰਕਸ਼ਨਾਂ ਨੂੰ ਅਨਗਰੁੱਪ ਕਰੋ।
ਅਜਿਹਾ ਕਰਨ ਲਈ, ਫਲੈਟ ਪ੍ਰੋ ਵਿੱਚ ਸਾਰੀਆਂ ਪ੍ਰਕਿਰਿਆਵਾਂ > ਸਮੂਹ MPI (ਬੀ) 'ਤੇ ਸੱਜਾ ਕਲਿੱਕ ਕਰੋfile ਅਤੇ UngroupMPI ਚੁਣੋ। ਇਹ ਕਾਰਵਾਈ ਵਿਅਕਤੀਗਤ MPI ਕਾਲਾਂ ਦਾ ਪਰਦਾਫਾਸ਼ ਕਰਦੀ ਹੈ। - ਦੁਹਰਾਓ ਦੇ ਸ਼ੁਰੂ ਵਿੱਚ MPI_Sendrecv ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ ਉਹਨਾਂ ਦੇ ਸਿੱਧੇ ਗੁਆਂਢੀਆਂ ਨਾਲ ਸੰਚਾਰ ਕਰਨ ਵਾਲੀਆਂ ਪ੍ਰਕਿਰਿਆਵਾਂ ਦਾ ਵਿਸ਼ਲੇਸ਼ਣ ਕਰੋ। ਸਾਬਕਾ ਲਈampLe:
- a ਵਿਚ ਐੱਸample, MPI_Sendrecv ਡੇਟਾ ਐਕਸਚੇਂਜ ਵਿੱਚ ਇੱਕ ਰੁਕਾਵਟ ਹੈ: ਪ੍ਰਕਿਰਿਆ ਆਪਣੇ ਅਗਲੇ ਗੁਆਂਢੀ ਨਾਲ ਡੇਟਾ ਦਾ ਆਦਾਨ-ਪ੍ਰਦਾਨ ਨਹੀਂ ਕਰਦੀ ਜਦੋਂ ਤੱਕ ਪਿਛਲੇ ਇੱਕ ਨਾਲ ਐਕਸਚੇਂਜ ਪੂਰਾ ਨਹੀਂ ਹੋ ਜਾਂਦਾ। ਇਵੈਂਟ ਟਾਈਮਲਾਈਨਜ਼ view ਇਸ ਰੁਕਾਵਟ ਨੂੰ ਪੌੜੀਆਂ ਦੇ ਰੂਪ ਵਿੱਚ ਪ੍ਰਦਰਸ਼ਿਤ ਕਰਦਾ ਹੈ।
- ਬੀ. ਦੁਹਰਾਓ ਦੇ ਅੰਤ ਵਿੱਚ MPI_Allreduce ਸਾਰੀਆਂ ਪ੍ਰਕਿਰਿਆਵਾਂ ਨੂੰ ਮੁੜ ਸਮਕਾਲੀ ਬਣਾਉਂਦਾ ਹੈ; ਇਸ ਲਈ ਇਸ ਬਲਾਕ ਵਿੱਚ ਉਲਟ ਪੌੜੀਆਂ ਦੀ ਦਿੱਖ ਹੈ।
- ਫੰਕਸ਼ਨ ਪ੍ਰੋ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਸੀਰੀਅਲਾਈਜ਼ੇਸ਼ਨ ਦੀ ਪਛਾਣ ਕਰੋfile ਅਤੇ ਸੁਨੇਹਾ ਪ੍ਰੋfile views.
- a ਉਸੇ ਸਮੇਂ ਚਾਰਟ ਖੋਲ੍ਹੋ:
ਸਮਾਗਮ ਵਿੱਚ ਪ੍ਰੋfile ਚਾਰਟ, ਲੋਡ ਬੈਲੈਂਸਟੈਬ ਖੋਲ੍ਹੋ। - ਮੈਸੇਜ ਪ੍ਰੋ ਨੂੰ ਖੋਲ੍ਹਣ ਲਈ ਚਾਰਟ ਮੀਨੂ 'ਤੇ ਜਾਓfile.
- ਬੀ. ਲੋਡ ਬੈਲੇਂਸ ਟੈਬ ਵਿੱਚ, MPI_Sendrecv ਅਤੇ MPI_Allreduce ਦਾ ਵਿਸਤਾਰ ਕਰੋ। ਲੋਡ ਸੰਤੁਲਨ ਦਰਸਾਉਂਦਾ ਹੈ ਕਿ MPI_Sendrecv ਵਿੱਚ ਬਿਤਾਇਆ ਸਮਾਂ ਪ੍ਰਕਿਰਿਆ ਸੰਖਿਆ ਦੇ ਨਾਲ ਵਧਦਾ ਹੈ, ਜਦੋਂ ਕਿ MPI_Allreduce ਲਈ ਸਮਾਂ ਘਟਦਾ ਹੈ।
- c. ਮੈਸੇਜ ਪ੍ਰੋ ਦੀ ਜਾਂਚ ਕਰੋfile ਹੇਠਲੇ ਸੱਜੇ ਕੋਨੇ ਤੱਕ ਚਾਰਟ.
ਬਲਾਕਾਂ ਦੀ ਕਲਰ ਕੋਡਿੰਗ ਦਰਸਾਉਂਦੀ ਹੈ ਕਿ ਉੱਚ ਦਰਜੇ ਤੋਂ ਹੇਠਲੇ ਰੈਂਕ ਤੱਕ ਯਾਤਰਾ ਕਰਨ ਵਾਲੇ ਸੰਦੇਸ਼ਾਂ ਨੂੰ ਅਨੁਪਾਤਕ ਤੌਰ 'ਤੇ ਵਧੇਰੇ ਸਮਾਂ ਚਾਹੀਦਾ ਹੈ ਜਦੋਂ ਕਿ ਹੇਠਲੇ ਰੈਂਕ ਤੋਂ ਉੱਚ ਰੈਂਕ ਤੱਕ ਯਾਤਰਾ ਕਰਨ ਵਾਲੇ ਸੁਨੇਹਿਆਂ ਵਿੱਚ ਇੱਕ ਕਮਜ਼ੋਰ ਸਮ-ਅਜੀਬ ਕਿਸਮ ਦਾ ਪੈਟਰਨ ਪ੍ਰਗਟ ਹੁੰਦਾ ਹੈ:
- a ਉਸੇ ਸਮੇਂ ਚਾਰਟ ਖੋਲ੍ਹੋ:
ਤੁਲਨਾਤਮਕ ਵਿਸ਼ਲੇਸ਼ਣ ਦੇ ਨਤੀਜੇ ਦਰਸਾਉਂਦੇ ਹਨ ਕਿ ਐਪਲੀਕੇਸ਼ਨ ਵਿੱਚ ਕੋਈ ਗੁੰਝਲਦਾਰ ਐਕਸਚੇਂਜ ਪੈਟਰਨ ਨਹੀਂ ਹਨ, ਐਕਸਚੇਂਜ ਸਿਰਫ ਗੁਆਂਢੀ ਪ੍ਰਕਿਰਿਆਵਾਂ ਨਾਲ ਹੀ ਕੀਤਾ ਜਾਂਦਾ ਹੈ। ਐਪਲੀਕੇਸ਼ਨ ਦੇ ਸੰਚਾਰ ਮਾਡਲ ਨੂੰ ਅਨੁਕੂਲ ਬਣਾਉਣ ਲਈ ਸੰਚਾਰ ਕਦਮ ਨੂੰ ਬਦਲ ਕੇ ਤੁਹਾਡੀ ਐਪਲੀਕੇਸ਼ਨ ਦੀ ਕਾਰਗੁਜ਼ਾਰੀ ਨੂੰ ਬਿਹਤਰ ਬਣਾਉਣ ਲਈ ਜਾਣਕਾਰੀ ਜ਼ਰੂਰੀ ਹੋਵੇਗੀ।
ਅਸੰਤੁਲਿਤ ਸੰਚਾਰ ਦੀ ਪਛਾਣ ਕਰੋ
ਆਪਣੀ ਅਰਜ਼ੀ ਨੂੰ ਆਦਰਸ਼ ਸਥਿਤੀਆਂ ਵਿੱਚ ਦੇਖੋ ਅਤੇ ਅਸਲ ਟਰੇਸ ਦੀ ਤੁਲਨਾ ਕਰੋ file ਸਮੱਸਿਆ ਵਾਲੇ ਪਰਸਪਰ ਕ੍ਰਿਆਵਾਂ ਨੂੰ ਅਲੱਗ ਕਰਨ ਲਈ ਆਦਰਸ਼ਕ ਦੇ ਨਾਲ।
- ਇੱਕ ਆਦਰਸ਼ ਬਣਾਓ file:
- a ਐਡਵਾਂਸਡ > ਆਦਰਸ਼ੀਕਰਨ ਚੁਣੋ ਜਾਂ ਕਲਿੱਕ ਕਰੋ
(ਆਦਰਸ਼ੀਕਰਨ) ਟੂਲਬਾਰ ਬਟਨ।
- ਬੀ. ਆਦਰਸ਼ੀਕਰਨ ਡਾਇਲਾਗ ਬਾਕਸ (ਆਦਰਸ਼ ਟਰੇਸ file ਪਰਿਵਰਤਨ ਲਈ ਨਾਮ ਅਤੇ ਸਮਾਂ ਸੀਮਾ)।
- c. ਆਪਣੇ ਟਰੇਸ ਨੂੰ ਆਦਰਸ਼ ਬਣਾਉਣ ਲਈ ਸਟਾਰਟ 'ਤੇ ਕਲਿੱਕ ਕਰੋ।
- a ਐਡਵਾਂਸਡ > ਆਦਰਸ਼ੀਕਰਨ ਚੁਣੋ ਜਾਂ ਕਲਿੱਕ ਕਰੋ
- ਆਦਰਸ਼ ਟਰੇਸ ਨਾਲ ਅਸਲੀ ਟਰੇਸ ਦੀ ਤੁਲਨਾ ਕਰੋ:
- a ਐਡਵਾਂਸਡ > ਅਸੰਤੁਲਨ ਡਾਇਗ੍ਰਾਮ ਚੁਣੋ ਜਾਂ ਕਲਿੱਕ ਕਰੋ
(ਅਸੰਤੁਲਨ ਡਾਇਗ੍ਰਾਮ) ਟੂਲਬਾਰ ਬਟਨ।
- ਬੀ. ਅਸੰਤੁਲਨ ਡਾਇਗ੍ਰਾਮ ਡਾਇਲਾਗ ਬਾਕਸ ਵਿੱਚ, ਦੂਜੇ ਨੂੰ ਖੋਲ੍ਹੋ 'ਤੇ ਕਲਿੱਕ ਕਰੋ File ਬਟਨ, ਆਦਰਸ਼ ਟਰੇਸ 'ਤੇ ਨੈਵੀਗੇਟ ਕਰੋ, ਅਤੇ ਇਸਨੂੰ ਚੁਣੋ।
- c. ਅਸੰਤੁਲਨ ਡਾਇਗ੍ਰਾਮ ਵਿੰਡੋ ਵਿੱਚ, ਕੁੱਲ ਮੋਡ ਬਟਨ 'ਤੇ ਕਲਿੱਕ ਕਰੋ ਅਤੇ ਬ੍ਰੇਕਡਾਊਨ ਮੋਡ ਚੁਣੋ।
- a ਐਡਵਾਂਸਡ > ਅਸੰਤੁਲਨ ਡਾਇਗ੍ਰਾਮ ਚੁਣੋ ਜਾਂ ਕਲਿੱਕ ਕਰੋ
ਤੁਸੀਂ ਦੇਖ ਸਕਦੇ ਹੋ ਕਿ MPI_Sendrecv ਸਭ ਤੋਂ ਵੱਧ ਸਮਾਂ ਬਰਬਾਦ ਕਰਨ ਵਾਲਾ ਫੰਕਸ਼ਨ ਹੈ। ਅਸੰਤੁਲਨ ਭਾਰ ਵਿੱਚ ਪ੍ਰਦਰਸ਼ਿਤ ਕੀਤਾ ਗਿਆ ਹੈ
ਹਲਕਾ ਰੰਗ ਅਤੇ MPI_Sendrecv ਫੰਕਸ਼ਨ ਲਈ ਲਗਭਗ 10% ਸ਼ਾਮਲ ਕਰਦਾ ਹੈ। ਇਹ ਉਹ ਸਮਾਂ ਹੈ ਜਦੋਂ ਪ੍ਰਕਿਰਿਆਵਾਂ ਇੱਕ ਦੂਜੇ ਦੀ ਉਡੀਕ ਵਿੱਚ ਬਿਤਾਉਂਦੀਆਂ ਹਨ.
ਸੰਚਾਰ ਬਦਲ ਕੇ ਆਪਣੀ ਐਪਲੀਕੇਸ਼ਨ ਦੀ ਕਾਰਗੁਜ਼ਾਰੀ ਵਿੱਚ ਸੁਧਾਰ ਕਰੋ
- ਬਲਾਕਿੰਗ ਨੂੰ ਗੈਰ-ਬਲਾਕਿੰਗ ਸੰਚਾਰ ਵਿੱਚ ਬਦਲ ਕੇ MPI ਐਪਲੀਕੇਸ਼ਨ ਦੀ ਕਾਰਗੁਜ਼ਾਰੀ ਵਿੱਚ ਸੁਧਾਰ ਕਰੋ।
ਆਪਣੇ ਕੋਡ ਵਿੱਚ ਸੀਰੀਅਲ MPI_Sendrcv ਨੂੰ ਗੈਰ-ਬਲੌਕਿੰਗ ਸੰਚਾਰ ਨਾਲ ਬਦਲੋ: MPI_Isend ਅਤੇ MPI_Irecv। ਸਾਬਕਾ ਲਈample: ਮੂਲ ਕੋਡ ਸਨਿੱਪਟ:
// ਸੀਮਾ ਐਕਸਚੇਂਜ
ਵਾਇਡ ਐਕਸਚੇਂਜ (ਪੈਰਾ* ਪੀ, ਗਰਿੱਡ* ਜੀਆਰ){
int i,j;
MPI_Status status_100, status_200, status_300, status_400;
// ਪਹਿਲੀ ਕਤਾਰ ਹੇਠਾਂ ਭੇਜੋ
MPI_Send(gr->x_new[1], gr->lcol+2, MPI_DOUBLE, gr->down, 100, MPI_COMM_WORLD); MPI_Recv(gr->x_new[gr->lrow+1], gr->lcol+2, MPI_DOUBLE, gr->ਅੱਪ, 100, MPI_COMM_WORLD,
&status_100);
// ਆਖਰੀ ਕਤਾਰ ਭੇਜੋ
MPI_Send(gr->x_new[gr->lrow], gr->lcol+2, MPI_DOUBLE, gr->ਅੱਪ, 200, MPI_COMM_WORLD);
MPI_Recv(gr->x_new[0], gr->lcol+2, MPI_DOUBLE, gr->down, 200, MPI_COMM_WORLD, &status_200);
ਇੰਟੈਲ ਟਰੇਸ ਐਨਾਲਾਈਜ਼ਰ ਤੁਲਨਾ ਦੀ ਵਰਤੋਂ ਕਰੋ view ਸੰਸ਼ੋਧਿਤ ਨਾਲ ਲੜੀਬੱਧ ਐਪਲੀਕੇਸ਼ਨ ਦੀ ਤੁਲਨਾ ਕਰਨ ਲਈ
// ਖੱਬੇ ਕਾਲਮ ਨੂੰ tmp ਐਰੇ ਵਿੱਚ ਕਾਪੀ ਕਰੋ
if(gr->ਖੱਬੇ!= MPI_PROC_NULL){
gr->x_new[i][gr->lcol+1] = right_col[i]; right_col[i] = gr->x_new[i][gr->lcol];
// ਸਹੀ ਭੇਜੋ
MPI_Send(right_col, gr->lrow+2, MPI_DOUBLE, gr->ਸੱਜੇ, 400, MPI_COMM_WORLD); }
if(gr->ਖੱਬੇ != MPI_PROC_NULL)
{
MPI_Recv(left_col, gr->lrow+2, MPI_DOUBLE, gr->ਖੱਬੇ, 400, MPI_COMM_WORLD,&status_400); ਲਈ(i=0; i< gr->lrow+2; i++
{
gr->x_new[i][0] = left_col[i];
}
}
ਅੱਪਡੇਟ ਕੀਤਾ ਕੋਡ ਸਨਿੱਪਟ
MPI_ ਬੇਨਤੀ ਬੇਨਤੀ[7];
// ਪਹਿਲੀ ਕਤਾਰ ਹੇਠਾਂ ਭੇਜੋ
MPI_Isend(gr->x_new[1], gr->lcol+2, MPI_DOUBLE, gr->down, 100, MPI_COMM_WORLD, &req[0]);
MPI_Irecv(gr->x_new[gr->lrow+1], gr->lcol+2, MPI_DOUBLE, gr->up, 100, MPI_COMM_WORLD, &req[1]);
…..
MPI_Waitall(7, req, MPI_STATUSES_IGNORE);
ਇੱਕ ਵਾਰ ਠੀਕ ਹੋ ਜਾਣ 'ਤੇ, ਸੰਸ਼ੋਧਿਤ ਐਪਲੀਕੇਸ਼ਨ ਦਾ ਸਿੰਗਲ ਦੁਹਰਾਅ ਹੇਠਾਂ ਦਿੱਤੇ ਸਾਬਕਾ ਵਰਗਾ ਦਿਖਾਈ ਦੇਵੇਗਾampLe: - ਇੰਟੈਲ ਟਰੇਸ ਐਨਾਲਾਈਜ਼ਰ ਤੁਲਨਾ ਦੀ ਵਰਤੋਂ ਕਰੋ view ਸੰਸ਼ੋਧਿਤ ਐਪਲੀਕੇਸ਼ਨ ਨਾਲ ਲੜੀਬੱਧ ਐਪਲੀਕੇਸ਼ਨ ਦੀ ਤੁਲਨਾ ਕਰਨ ਲਈ। ਤੁਲਨਾ ਦੀ ਮਦਦ ਨਾਲ ਦੋ ਨਿਸ਼ਾਨਾਂ ਦੀ ਤੁਲਨਾ ਕਰੋ View, ਜਾ ਰਿਹਾ ਹੈ View > ਤੁਲਨਾ ਕਰੋ। ਤੁਲਨਾ View ਇਸ ਤਰ੍ਹਾਂ ਦਿਖਾਈ ਦਿੰਦਾ ਹੈ:
ਤੁਲਨਾ ਵਿਚ View, ਤੁਸੀਂ ਦੇਖ ਸਕਦੇ ਹੋ ਕਿ ਗੈਰ-ਬਲੌਕਿੰਗ ਸੰਚਾਰ ਦੀ ਵਰਤੋਂ ਸੀਰੀਅਲਾਈਜ਼ੇਸ਼ਨ ਨੂੰ ਹਟਾਉਣ ਅਤੇ ਪ੍ਰਕਿਰਿਆਵਾਂ ਦੇ ਸੰਚਾਰ ਦੇ ਸਮੇਂ ਨੂੰ ਘਟਾਉਣ ਵਿੱਚ ਮਦਦ ਕਰਦੀ ਹੈ।
ਨੋਟ ਕਰੋ ਤੁਹਾਡੀ ਐਪਲੀਕੇਸ਼ਨ ਦੇ ਨੋਡ-ਪੱਧਰ ਦੀ ਕਾਰਗੁਜ਼ਾਰੀ ਬਾਰੇ ਵਧੇਰੇ ਜਾਣਕਾਰੀ ਲਈ, ਸੰਬੰਧਿਤ ਟੂਲਸ ਲਈ ਦਸਤਾਵੇਜ਼ ਵੇਖੋ: Intel® VTune™ ਪ੍ਰੋfiler MPI ਕੋਡ ਵਿਸ਼ਲੇਸ਼ਣ ਅਤੇ Intel® ਸਲਾਹਕਾਰ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ Intel® MPI ਐਪਲੀਕੇਸ਼ਨਾਂ ਦਾ ਵਿਸ਼ਲੇਸ਼ਣ ਕਰਨਾ।
ਜਿਆਦਾ ਜਾਣੋ
ਇੰਟੇਲ ਟਰੇਸ ਐਨਾਲਾਈਜ਼ਰ ਅਤੇ ਕੁਲੈਕਟਰ ਬਾਰੇ ਹੋਰ ਜਾਣਕਾਰੀ ਲਈ ਹੇਠਾਂ ਦਿੱਤੇ ਸਰੋਤਾਂ ਦੀ ਪੜਚੋਲ ਕਰੋ।
ਨੋਟਿਸ ਅਤੇ ਬੇਦਾਅਵਾ
- ਇੰਟੈੱਲ ਤਕਨਾਲੋਜੀਆਂ ਨੂੰ ਸਮਰੱਥ ਹਾਰਡਵੇਅਰ, ਸਾੱਫਟਵੇਅਰ ਜਾਂ ਸੇਵਾ ਐਕਟੀਵੇਸ਼ਨ ਦੀ ਲੋੜ ਹੋ ਸਕਦੀ ਹੈ.
- ਕੋਈ ਵੀ ਉਤਪਾਦ ਜਾਂ ਭਾਗ ਬਿਲਕੁਲ ਸੁਰੱਖਿਅਤ ਨਹੀਂ ਹੋ ਸਕਦਾ।
- ਤੁਹਾਡੀਆਂ ਕੀਮਤਾਂ ਅਤੇ ਨਤੀਜੇ ਵੱਖਰੇ ਹੋ ਸਕਦੇ ਹਨ.
- © ਇੰਟੇਲ ਕਾਰਪੋਰੇਸ਼ਨ। Intel, Intel ਲੋਗੋ, ਅਤੇ ਹੋਰ Intel ਚਿੰਨ੍ਹ Intel ਕਾਰਪੋਰੇਸ਼ਨ ਜਾਂ ਇਸਦੀਆਂ ਸਹਾਇਕ ਕੰਪਨੀਆਂ ਦੇ ਟ੍ਰੇਡਮਾਰਕ ਹਨ। ਹੋਰ ਨਾਵਾਂ ਅਤੇ ਬ੍ਰਾਂਡਾਂ 'ਤੇ ਦੂਜਿਆਂ ਦੀ ਸੰਪਤੀ ਵਜੋਂ ਦਾਅਵਾ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ।
- ਇਸ ਦਸਤਾਵੇਜ਼ ਦੁਆਰਾ ਕਿਸੇ ਵੀ ਬੌਧਿਕ ਸੰਪੱਤੀ ਦੇ ਅਧਿਕਾਰਾਂ ਲਈ ਕੋਈ ਲਾਇਸੈਂਸ (ਐਸਟੋਪਲ ਦੁਆਰਾ ਜਾਂ ਕਿਸੇ ਹੋਰ ਤਰੀਕੇ ਨਾਲ ਪ੍ਰਗਟ ਜਾਂ ਸੰਕੇਤ) ਨਹੀਂ ਦਿੱਤਾ ਗਿਆ ਹੈ।
- ਵਰਣਿਤ ਉਤਪਾਦਾਂ ਵਿੱਚ ਡਿਜ਼ਾਈਨ ਨੁਕਸ ਜਾਂ ਇਰੱਟਾ ਵਜੋਂ ਜਾਣੀਆਂ ਜਾਂਦੀਆਂ ਗਲਤੀਆਂ ਹੋ ਸਕਦੀਆਂ ਹਨ ਜੋ ਉਤਪਾਦ ਨੂੰ ਪ੍ਰਕਾਸ਼ਿਤ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਤੋਂ ਭਟਕਣ ਦਾ ਕਾਰਨ ਬਣ ਸਕਦੀਆਂ ਹਨ। ਮੌਜੂਦਾ ਅੱਖਰ-ਚਿੰਨ੍ਹ ਇਰੱਟਾ ਬੇਨਤੀ 'ਤੇ ਉਪਲਬਧ ਹੈ।
- Intel ਸਾਰੀਆਂ ਐਕਸਪ੍ਰੈਸ ਅਤੇ ਅਪ੍ਰਤੱਖ ਵਾਰੰਟੀਆਂ ਦਾ ਖੰਡਨ ਕਰਦਾ ਹੈ, ਜਿਸ ਵਿੱਚ ਸੀਮਾ ਤੋਂ ਬਿਨਾਂ, ਵਪਾਰਕਤਾ ਦੀਆਂ ਅਪ੍ਰਤੱਖ ਵਾਰੰਟੀਆਂ, ਕਿਸੇ ਖਾਸ ਉਦੇਸ਼ ਲਈ ਤੰਦਰੁਸਤੀ, ਅਤੇ ਗੈਰ-ਉਲੰਘਣਾ, ਅਤੇ ਨਾਲ ਹੀ ਪ੍ਰਦਰਸ਼ਨ ਦੇ ਕੋਰਸ, ਸੌਦੇ ਦੇ ਕੋਰਸ, ਜਾਂ ਵਪਾਰ ਵਿੱਚ ਵਰਤੋਂ ਤੋਂ ਪੈਦਾ ਹੋਣ ਵਾਲੀ ਕੋਈ ਵੀ ਵਾਰੰਟੀ ਸ਼ਾਮਲ ਹੈ।
ਦਸਤਾਵੇਜ਼ / ਸਰੋਤ
![]() |
intel Intel ਟਰੇਸ ਐਨਾਲਾਈਜ਼ਰ ਅਤੇ ਕੁਲੈਕਟਰ ਨਾਲ ਸ਼ੁਰੂਆਤ ਕਰੋ [pdf] ਯੂਜ਼ਰ ਗਾਈਡ Intel ਟਰੇਸ ਐਨਾਲਾਈਜ਼ਰ ਅਤੇ ਕੁਲੈਕਟਰ ਨਾਲ ਸ਼ੁਰੂਆਤ ਕਰੋ, Intel, ਟ੍ਰੇਸ ਐਨਾਲਾਈਜ਼ਰ ਅਤੇ ਕੁਲੈਕਟਰ, ਕੁਲੈਕਟਰ ਨਾਲ ਸ਼ੁਰੂਆਤ ਕਰੋ |