| ²é¿´: 1115 | »Ø¸´: 0 | |||
A±¦Â»¼ÆËãÒø³æ (³õÈëÎÄ̳)
|
[½»Á÷]
VASP µÄ OpenACC GPU ¶Ë¿Ú
|
|
ÔÚ VASP.6.2.0 ÖУ¬ÎÒÃÇÕýʽ·¢²¼ÁË VASP µÄ OpenACC GPU ¶Ë¿Ú£ºÕýʽµÄÒâ˼ÊÇÎÒÃÇÏÖÔÚÇ¿ÁÒ½¨ÒéʹÓÃ´Ë OpenACC °æ±¾ÔÚ GPU ¼ÓËÙϵͳÉÏÔËÐÐ VASP¡£ VASP֮ǰµÄCUDA-C GPU ¶Ë¿Ú±»ÈÏΪÒÑÆúÓ㬲»ÔÙ»ý¼«¿ª·¢¡¢Î¬»¤»òÖ§³Ö¡£´Ó VASP.6.3.0 ¿ªÊ¼£¬VASP µÄ CUDA-C GPU ¶Ë¿ÚÒÑÍêȫɾ³ý¡£ ÄÚÈÝ 1¸öÒªÇó 1.1Èí¼þÕ» 1.2Ó²¼þ 2¸ö½¨Öþ 3¸öÌØµãºÍÏÞÖÆ 4¸öÔËÐÐ OpenACC °æ±¾ 5¸öѧ·Ö 6¸öÏà¹ØÎÄÕ ҪÇó Èí¼þÕ» ±àÒëÆ÷ Òª±àÒë VASP µÄ OpenACC °æ±¾£¬ÄúÐèÒª×îа汾µÄNVIDIA HPC-SDK (>=21.2)¡£ ÔÔòÉÏ£¬ÈκÎÖÁÉÙÖ§³Ö OpenACC ±ê×¼ 2.6 µÄ±àÒëÆ÷¶¼Ó¦¸Ã¿ÉÒÔ×öµ½ÕâÒ»µã£¬µ«ÎÒÃÇÖ»³¢ÊԺͲâÊÔÁËÉÏÊö±àÒëÆ÷¡£ ×¢Ò⣺NVIDIA HPC-SDK °æ±¾ 22.1 ºÍ 22.2 ÓÐÒ»¸öÑÏÖØµÄ´íÎ󣬽ûÖ¹Óë OpenMP Ïß³ÌÒ»ÆðÖ´ÐÐ OpenACC °æ±¾¡£Ê¹ÓÃÕâЩ±àÒëÆ÷°æ±¾Ê±£¬ÄúÓ¦¸ÃÔÚûÓÐ OpenMP Ö§³ÖµÄÇé¿öϽøÐбàÒë¡£´Ë´íÎóÒÑ´Ó NVIDIA HPC-SDK °æ±¾ 22.3 ¿ªÊ¼ÐÞ¸´¡£ ͼÊé¹Ý ÊýÖµ¿â£ºFFTW¡¢BLAS¡¢LAPACK ºÍ scaLAPACK¡£Èç¹ûÄúʹÓõÄÊÇNVIDIA HPC-SDK£¬Äú±ØÐë×Ô¼º°²×°µÄΨһÊýÖµ¿âÊÇFFTW¡£ºóÈý¸ö£¨BLAS¡¢LAPACK ºÍ scaLAPACK£©Ëæ SDK Ò»ÆðÌṩ¡£»òÕߣ¬Äú¿ÉÒÔÁ´½Óµ½ÌṩËùÓÐËĸöµÄIntel oneAPI MKL¿âµÄ°²×°¡£ NVIDIA CUDA ¹¤¾ß°ü(>=10.0)¡£ËùÓбØÒªµÄ CUDA ¹¤¾ß°ü×é¼þ¶¼×÷Ϊ NVIDIA HPC-SDK µÄÒ»²¿·ÖÌṩ¡£ MPI µÄ CUDA ¸ÐÖª°æ±¾¡£Óë NVIDIA HPC-SDK Ò»Æð´ò°üµÄ OpenMPI °²×°ÊÇ CUDA ¸ÐÖªµÄ¡£ NVIDIA ¼¯ÌåͨÐÅ¿â (NCCL) (>=2.7.8)¡£Õâ¸ö¿â²»ÊÇÒ»¸öÑϸñµÄÒªÇ󣬵«³öÓÚÐÔÄÜÔÒòÇ¿ÁÒ½¨ÒéʹÓÃËü¡£ºÏÊ浀 NCCL °²×°×÷Ϊ NVIDIA HPC-SDK µÄÒ»²¿·ÖÌṩ¡£ ˾»ú ÄúÐèÒªÒ»¸öÖÁÉÙÖ§³Ö CUDA-10.0 µÄ CUDA Çý¶¯³ÌÐò¡£ Ó²¼þ ÎÒÃǽöʹÓÃÒÔÏ NVIDIA GPU ²âÊÔÁË VASP µÄ OpenACC GPU ¶Ë¿Ú£º NVIDIA Êý¾ÝÖÐÐÄ GPU£ºP100 (Pascal)¡¢V100 (Volta) ºÍ A100 (Ampere)¡£ NVIDIA Quadro GPU£ºGP100 (Pascal) ºÍ GV100 (Volta)¡£ ×¢Ò⣺ÔÚÆäËû NVIDIA GPU£¨ÀýÈç¡°ÓÎÏ·¡±Ó²¼þ£©ÉÏÔËÐÐ VASP ÔÚ¼¼ÊõÉÏÊÇ¿ÉÐе쬵«²»¿ÉÈ¡£ºÕâЩ GPU ²»Ì«Êʺϣ¬ÒòΪËüÃDz»Ìṩ¿ìËÙË«¾«¶È¸¡µãÔËËã (FP64) ÐÔÄÜ£¬²¢ÇÒͨ³£¾ßÓиüСµÄûÓоÀ´íÂë (ECC) ¹¦ÄܵĴ洢Æ÷¡£ ½¨Öþ Òª¹¹½¨ VASP µÄ OpenACC ¶Ë¿Ú£¬×îºÃ½«ÄúµÄmakefile.includeÎļþ»ùÓÚÆäÖÐÒ»¸öÔÐÍÄ£°å£¬²¢¸ù¾ÝÄúϵͳµÄ¾ßÌåÇé¿öµ÷ÕûÕâЩģ°å¡£ ÌØµãºÍÏÞÖÆ VASP µÄ´ó²¿·Ö¹¦Äܶ¼ÒÑʹÓà OpenACC ÒÆÖ²µ½ GPU£¬µ«Éæ¼° RPA µÄËùÓй¦ÄܳýÍ⣺GW ºÍ ACFDT¡£ÕâÊÇÕýÔÚ½øÐеŤ×÷¡£ ³öÓÚÐÔÄÜÔÒò£¬Ó¦±ÜÃâʹÓò¨º¯ÊýµÄ²¢ÐÐ FFT ( NCORE >1)¡£Ä¿Ç°£¬¼´Ê¹ÔÚINCARÎļþÖÐÁíÓÐÖ¸¶¨£¬OpenACC °æ±¾Ò²»á×Ô¶¯Çл»µ½NCORE =1 ¡£ ÓÉÓÚʹÓà NCCL£¬VASP µÄ OpenACC °æ±¾Ö»ÄÜʹÓÃÿ¸ö¿ÉÓà GPU µÄµ¥¸ö MPI µÈ¼¶À´Ö´ÐУº ÔÚ´ó¶àÊýÇé¿öÏ£¬Ê¹Óà NCCL ¾ßÓкܴóµÄÐÔÄÜÓÅÊÆ¡£µ«ÊÇ£¬ÎÒÃÇÖªµÀÕâÑùÒ»¸öÊÂʵ£¬¼´¶ÔÓÚСÐÍϵͳÉϵļÆË㣬±£ÁôÈöà¸ö MPI ¼¶Êý¹²ÏíÒ»¸ö GPU µÄÄÜÁ¦½«ºÜÓÐÓ㬲¢¼Æ»®Ê¹ NCCL µÄʹÓóÉΪ¿ÉÑ¡µÄÒÔÏû³ý´ËÏÞÖÆ¡£ ÔËÐÐ OpenACC °æ±¾ 1.ÿ¸ö GPU ʹÓõ¥¸ö MPI µÈ¼¶£¨Ä¿Ç°£¬NCCL µÄʹÓÃÅųýÁËÿ¸ö GPU ʹÓöà¸öµÈ¼¶£©¡£ 2.³ýÁË MPI µÈ¼¶Ö®Í⣬»¹Ê¹Óà OpenMP Ïß³ÌÀ´ÀûÓøü¶à¿ÉÓÃµÄ CPU ÄÜÁ¦¡£OpenACC °æ±¾Ä¿Ç°½öÏÞÓÚʹÓà 1 ¸ö MPI-rank/GPU£¬ÕâÒâζ×Å¿ÉÄÜÓÐÏ൱¶àµÄ CPU ÄÜÁ¦Î´±»Ê¹Óá£ÓÉÓÚÈÔÈ»Óв¿·Ö´úÂëÔÚ CPU ¶ËÔËÐУ¬Òò´ËÔÊÐíÿ¸ö MPI µÈ¼¶Ê¹Óöà¸ö OpenMP Ï߳̿ÉÄÜÊÇÓÐÒæµÄ£º oÒªÁ˽âÈçºÎʹÓà OpenACCºÍOpenMP Ö§³Ö¹¹½¨ VASP£¬Çë²é¿´makefile.include.nvhpc_ompi_mkl_omp_accÎļþ¡£ ×¢Ò⣺ÕâÀïÎÒÃÇÁ´½ÓÁËÓÃÓÚ CPU ¶Ë FFTW¡¢BLAS¡¢LAPACK ºÍ scaLAPACK µ÷ÓõÄÓ¢ÌØ¶û MKL ¿âºÍÓ¢ÌØ¶û OpenMP ÔËÐÐʱ¿â ( libiomp5.so ¡£ÔÚΪ Intel CPU ±àÒëʱǿÁÒ½¨ÒéÕâÑù×ö£¬ÓÈÆäÊÇÔÚʹÓöàÏß³Ìʱ¡£ÎªÈ·±£ MKL ʹÓÃÓ¢ÌØ¶û OpenMP ÔËÐÐʱ¿â£¬ÄúÐèҪͨ¹ýÒÔÏ·½Ê½ÉèÖû·¾³±äÁ¿£ºexport MKL_THREADING_LAYER=INTEL »òÕßͨ¹ýÌí¼Ó£º -x MKL_THREADING_LAYER=intel ×÷ΪÃüÁîµÄÑ¡Ïîmpirun¡£ o½« OpenMPI µÈ¼¶ºÍ OpenMP Ïß³ÌÕýÈ··ÅÖú͹̶¨µ½ CPU ÄÚºËÉÏ¿ÉÄÜÓе㼬ÊÖ£¬ÕâÈ¡¾öÓÚʹÓÃµÄ MPI µÄÌØ¶¨·ç¸ñ¡£ 3.Òª»ñµÃ×î¼ÑÐÔÄÜ£¬Ã÷ÖǵØÑ¡ÔñKPARºÍNSIM·Ç³£ÖØÒª¡£²»ÐÒµÄÊÇ£¬ÀíÏëÖµ½«È¡¾öÓÚÄúϵͳµÄ¾ßÌåÇé¿ö£¬°üÀ¨¹¤×÷¸ºÔغÍÓ²¼þ£¬Òò´ËÄú½«²»µÃ²»³¢ÊÔ²»Í¬µÄÉèÖᣵ«ÊÇ£¬¸ù¾Ý¾Ñ飬¿ÉÒÔ˵£º o½«KPARÉèÖÃΪÄú½«ÒªÊ¹ÓÃµÄ GPU ÊýÁ¿£¨= MPI-ranks£©¡£²»¹ý£¬Õâ½öÔÚ¼ÆËãÖв»¿ÉÔ¼kµãµÄÊýÁ¿»ò¶à»òÉٿɱ»KPARÕû³ýʱ²ÅÓÐÒâÒ壬·ñÔò MPI µÈ¼¶ÉϵŤ×÷·Ö²¼½«ÑÏÖØ²»Æ½ºâ¡£ÕâÒâζ×ÅÄúÔÚÑ¡Ôñ´Ë²ÎÊýʱµÄÑ¡ÏîÓÐЩÊÜÏÞ¡£ oNSIMÈ·¶¨ÔÚÐí¶àµç×ÓÇó½âÆ÷£¨ÀýÈç RMM-DIIS ºÍ blocked-Davidson£©ÖÐͬʱÓÅ»¯µÄ²¨¶ÎÊý¡£×÷ΪһÏî¹æÔò£¬Óë CPU ¶ËÖ´ÐÐÏà±È£¬Ó¦¸ÃÑ¡Ôñ¸ü´óµÄ²ÎÊýÒÔ»ñµÃ GPU ÉϵÄÁ¼ºÃÐÔÄÜ¡£ ×¢Ò⣺ΪÁËÓÅ»¯ VASP µÄ CPU ¶ËÖ´ÐУ¬Í¨³£Ò²»á¶ÔNCORE½øÐв»Í¬µÄÉèÖᣵ±ÔÚ GPU ÉÏÔËÐÐʱ£¬Èκβ»Í¬ÓÚNCORE =1 µÄ¶«Î÷¶¼»á¶ÔÐÔÄܲúÉú²»ÀûÓ°Ï죬²¢ÇÒ VASP ½«×Ô¶¯Çл»µ½NCORE =1£¬¼´Ê¹ÔÚINCARÎļþÖÐÁíÓÐÖ¸¶¨Ò²ÊÇÈç´Ë¡£ |
» ²ÂÄãϲ»¶
£Ûµ÷¼ÁÐÅÏ¢£Ý211ÖÇÄÜÈ˹¤¸ÐÖª·½Ïò¹ú¼ÒÇàÄêÌØÆ¸×¨¼Ò¿ÎÌâ×éÕÐÊÕµ÷¼ÁÑо¿Éú
ÒѾÓÐ0È˻ظ´
[µ÷¼ÁÐÅÏ¢]211ÖÇÄÜÈ˹¤¸ÐÖª·½Ïò¹ú¼ÒÇàÄêÌØÆ¸×¨¼Ò¿ÎÌâ×éÕÐÊÕµ÷¼ÁÑо¿Éú
ÒѾÓÐ0È˻ظ´
ÎïÀíѧIÂÛÎÄÈóÉ«/·ÒëÔõôÊÕ·Ñ?
ÒѾÓÐ266È˻ظ´
0702Ò»Ö¾Ô¸¼ª´óBÇøÇóµ÷¼Á ±¾¿ÆÆÚ¼ä·¢±íһƪSci
ÒѾÓÐ2È˻ظ´
070200Çóµ÷¼Á£¬Ò»Ö¾Ô¸Ä³211£¬288·Ö
ÒѾÓÐ18È˻ظ´
·¨¹ú²©Ê¿ºóְλ
ÒѾÓÐ0È˻ظ´
ÖØÇì½»´ó26Äê˶ʿÉúÕÐÉúÄâµ÷¼Á֪ͨÒѳö£¡»¶Ó¼ÓÈë»úÆ÷ÊÓ¾õÓë3D¹âѧ³ÉÏñ¿ÎÌâ×é¡£
ÒѾÓÐ0È˻ظ´
¹ãÖÝ´óѧ¹âµçÐÅÏ¢¹¤³Ìרҵµ÷¼Á£¬ÕÐÊÕÎïÀíѧרҵѧÉú
ÒѾÓÐ1È˻ظ´
0702Ò»Ö¾Ô¸¼ª´óBÇøÇóµ÷¼Á ±¾¿ÆÆÚ¼ä·¢±íһƪSci
ÒѾÓÐ0È˻ظ´














¡£ÔÚΪ Intel CPU ±àÒëʱǿÁÒ½¨ÒéÕâÑù×ö£¬ÓÈÆäÊÇÔÚʹÓöàÏß³Ìʱ¡£ÎªÈ·±£ MKL ʹÓÃÓ¢ÌØ¶û OpenMP ÔËÐÐʱ¿â£¬ÄúÐèҪͨ¹ýÒÔÏ·½Ê½ÉèÖû·¾³±äÁ¿£º
»Ø¸´´ËÂ¥
5