PageSourceSearch

https://www.bsc.es/supportkc/assets/js/a9b317d7.af8266cb.js

js bsc.es collected 2026-09-24 08:45:05 UTC 12,274 bytes, 1 lines download raw bytes

1"use strict";(self.webpackChunksupportkc_new=self.webpackChunksupportkc_new||[]).push([[4581],{3905:(t,e,n)=>{n.d(e,{Zo:()=>u,kt:()=>k});var a=n(67294);function r(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function l(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);e&&(a=a.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,a)}return n}function i(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?l(Object(n),!0).forEach((function(e){r(t,e,n[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):l(Object(n)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}))}return t}function o(t,e){if(null==t)return{};var n,a,r=function(t,e){if(null==t)return{};var n,a,r={},l=Object.keys(t);for(a=0;a<l.length;a++)n=l[a],e.indexOf(n)>=0||(r[n]=t[n]);return r}(t,e);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(t);for(a=0;a<l.length;a++)n=l[a],e.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(r[n]=t[n])}return r}var p=a.createContext({}),s=function(t){var e=a.useContext(p),n=e;return t&&(n="function"==typeof t?t(e):i(i({},e),t)),n},u=function(t){var e=s(t.components);return a.createElement(p.Provider,{value:e},t.children)},m="mdxType",d={inlineCode:"code",wrapper:function(t){var e=t.children;return a.createElement(a.Fragment,{},e)}},c=a.forwardRef((function(t,e){var n=t.components,r=t.mdxType,l=t.originalType,p=t.parentName,u=o(t,["components","mdxType","originalType","parentName"]),m=s(n),c=r,k=m["".concat(p,".").concat(c)]||m[c]||d[c]||l;return n?a.createElement(k,i(i({ref:e},u),{},{components:n})):a.createElement(k,i({ref:e},u))}));function k(t,e){var n=arguments,r=e&&e.mdxType;if("string"==typeof t||r){var l=n.length,i=new Array(l);i[0]=c;var o={};for(var p in e)hasOwnProperty.call(e,p)&&(o[p]=e[p]);o.originalType=t,o[m]="string"==typeof t?t:r,i[1]=o;for(var s=2;s<l;s++)i[s]=n[s];return a.createElement.apply(null,i)}return a.createElement.apply(null,n)}c.displayName="MDXCreateElement"},29439:(t,e,n)=>{n.r(e),n.d(e,{assets:()=>p,contentTitle:()=>i,default:()=>d,frontMatter:()=>l,metadata:()=>o,toc:()=>s});var a=n(87462),r=(n(67294),n(3905));const l={sidebar_position:5,sidebar_label:"VASP"},i="General-Purpose Partition Applications",o={unversionedId:"MareNostrum5/Marenostrum5-Applications/GPP/VASP",id:"MareNostrum5/Marenostrum5-Applications/GPP/VASP",title:"General-Purpose Partition Applications",description:"VASP",source:"@site/docs/MareNostrum5/Marenostrum5-Applications/GPP/VASP.md",sourceDirName:"MareNostrum5/Marenostrum5-Applications/GPP",slug:"/MareNostrum5/Marenostrum5-Applications/GPP/VASP",permalink:"/supportkc/docs/MareNostrum5/Marenostrum5-Applications/GPP/VASP",draft:!1,tags:[],version:"current",sidebarPosition:5,frontMatter:{sidebar_position:5,sidebar_label:"VASP"},sidebar:"tutorialSidebar",previous:{title:"QuantumESPRESSO",permalink:"/supportkc/docs/MareNostrum5/Marenostrum5-Applications/GPP/QuantumESPRESSO"},next:{title:"ACC applications",permalink:"/supportkc/docs/MareNostrum5/Marenostrum5-Applications/ACC/"}},p={},s=[{value:"VASP",id:"vasp",level:2},{value:"Overview",id:"overview",level:3},{value:"Test Datasets",id:"test-datasets",level:3},{value:"Test Case: Si256_VJT_HSE06",id:"test-case-si256_vjt_hse06",level:2},{value:"Sample Job Script",id:"sample-job-script",level:3},{value:"Single Node Performance Results",id:"single-node-performance-results",level:3},{value:"Performance Visualization",id:"performance-visualization",level:3},{value:"Multi-Node Scaling Results",id:"multi-node-scaling-results",level:3},{value:"Multi-Node Performance Visualization",id:"multi-node-performance-visualization",level:3}],u={toc:s},m="wrapper";function d(t){let{components:e,...l}=t;return(0,r.kt)(m,(0,a.Z)({},u,l,{components:e,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"general-purpose-partition-applications"},"General-Purpose Partition Applications"),(0,r.kt)("h2",{id:"vasp"},"VASP"),(0,r.kt)("h3",{id:"overview"},"Overview"),(0,r.kt)("p",null,"The Vienna Ab initio Simulation Package, better known as VASP, is a package written primarily in Fortran for performing ab initio quantum mechanical calculations using either Vanderbilt pseudopotentials, or the projector augmented wave method, and a plane wave basis set."),(0,r.kt)("h3",{id:"test-datasets"},"Test Datasets"),(0,r.kt)("p",null,"In our performance evaluation, we used the following input dataset:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Si256_VJT_HSE06"))),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Dataset characteristics:")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Vacancy in Si (\u03a9 \u22455200 \u212b3)"),(0,r.kt)("li",{parentName:"ul"},"255 Si atoms (1020 e\u2212)"),(0,r.kt)("li",{parentName:"ul"},"DFT/HF-hybrid functional"),(0,r.kt)("li",{parentName:"ul"},"Conjugate gradient")),(0,r.kt)("h2",{id:"test-case-si256_vjt_hse06"},"Test Case: Si256_VJT_HSE06"),(0,r.kt)("h3",{id:"sample-job-script"},"Sample Job Script"),(0,r.kt)("p",null,"Below is a sample job script for running VASP with the Si256_VJT_HSE06 input file:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"#!/bin/bash\n\n#SBATCH --job-name=vasp_run\n#SBATCH --nodes=1\n#SBATCH --ntasks-per-node=112  # Number of MPI ranks per node\n#SBATCH --cpus-per-task=1     # Number of OpenMP threads per MPI rank\n#SBATCH --time=02:00:00\n#SBATCH --output=vasp_out.out\n#SBATCH --error=vasp_out.err\n#SBATCH --account=xxxx        # Specify the account\n#SBATCH --partition=gpp       # Running on the GPP partition\n#SBATCH --qos=xxxxx           # Define the appropriate QoS\n\n# Load required modules\nmodule purge\nmodule load intel impi mkl vasp/6.5.1\n\n# Set environment variables\nexport SRUN_CPUS_PER_TASK=$SLURM_CPUS_PER_TASK\n\n# Ru
1n VASP simulation\nsrun vasp_std\n\n")),(0,r.kt)("h3",{id:"single-node-performance-results"},"Single Node Performance Results"),(0,r.kt)("p",null,"The table below shows performance results for different ",(0,r.kt)("strong",{parentName:"p"},"MPI rank \xd7 OpenMP thread")," configurations on a single GPP node (112 cores total). Lower values of WallTime(s) indicate better performance."),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Nodes"),(0,r.kt)("th",{parentName:"tr",align:null},"ntasks_per_node"),(0,r.kt)("th",{parentName:"tr",align:null},"cpus_per_task"),(0,r.kt)("th",{parentName:"tr",align:null},"WallTime_Result(s)"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"1"),(0,r.kt)("td",{parentName:"tr",align:null},"16"),(0,r.kt)("td",{parentName:"tr",align:null},"7"),(0,r.kt)("td",{parentName:"tr",align:null},"5348.744")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"1"),(0,r.kt)("td",{parentName:"tr",align:null},"28"),(0,r.kt)("td",{parentName:"tr",align:null},"4"),(0,r.kt)("td",{parentName:"tr",align:null},"2751.967")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"1"),(0,r.kt)("td",{parentName:"tr",align:null},"56"),(0,r.kt)("td",{parentName:"tr",align:null},"2"),(0,r.kt)("td",{parentName:"tr",align:null},"2319.294")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"\ud83c\udfc6",(0,r.kt)("strong",{parentName:"td"},"1")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"112")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"1")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"1886.423"))))),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Optimal Configuration"),": 112 MPI ranks \xd7 1 OpenMP thread per rank And (NCORE = 16)"),(0,r.kt)("h3",{id:"performance-visualization"},"Performance Visualization"),(0,r.kt)("p",null,"The chart below illustrates the performance of GROMACS with different MPI and OpenMP configurations on a single node:"),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"WallTime(s) vs MPI \xd7 OpenMP - single node",src:n(67957).Z,width:"1200",height:"600"})),(0,r.kt)("h3",{id:"multi-node-scaling-results"},"Multi-Node Scaling Results"),(0,r.kt)("p",null,"Using the optimal configuration (112 MPI ranks \xd7 1 OpenMP thread), we tested strong scaling from 1 to 16 nodes:"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Nodes"),(0,r.kt)("th",{parentName:"tr",align:null},"ntasks"),(0,r.kt)("th",{parentName:"tr",align:null},"ntasks_per_node"),(0,r.kt)("th",{parentName:"tr",align:null},"cpus_per_task"),(0,r.kt)("th",{parentName:"tr",align:null},"WallTime_Result(s)"),(0,r.kt)("th",{parentName:"tr",align:null},"Speedup"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"1"),(0,r.kt)("td",{parentName:"tr",align:null},"112"),(0,r.kt)("td",{parentName:"tr",align:null},"112"),(0,r.kt)("td",{parentName:"tr",align:null},"1"),(0,r.kt)("td",{parentName:"tr",align:null},"1886.423"),(0,r.kt)("td",{parentName:"tr",align:null},"1.00")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"2"),(0,r.kt)("td",{parentName:"tr",align:null},"224"),(0,r.kt)("td",{parentName:"tr",align:null},"112"),(0,r.kt)("td",{parentName:"tr",align:null},"1"),(0,r.kt)("td",{parentName:"tr",align:null},"1000.318"),(0,r.kt)("td",{parentName:"tr",align:null},"1.89")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"4"),(0,r.kt)("td",{parentName:"tr",align:null},"448"),(0,r.kt)("td",{parentName:"tr",align:null},"112"),(0,r.kt)("td",{parentName:"tr",align:null},"1"),(0,r.kt)("td",{parentName:"tr",align:null},"533.07"),(0,r.kt)("td",{parentName:"tr",align:null},"3.54")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"8"),(0,r.kt)("td",{parentName:"tr",align:null},"896"),(0,r.kt)("td",{parentName:"tr",align:null},"112"),(0,r.kt)("td",{parentName:"tr",align:null},"1"),(0,r.kt)("td",{parentName:"tr",align:null},"327.337"),(0,r.kt)("td",{parentName:"tr",align:null},"5.76")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"16"),(0,r.kt)("td",{parentName:"tr",align:null},"1792"),(0,r.kt)("td",{parentName:"tr",align:null},"112"),(0,r.kt)("td",{parentName:"tr",align:null},"1"),(0,r.kt)("td",{parentName:"tr",align:null},"222.061"),(0,r.kt)("td",{parentName:"tr",align:null},"8.49")))),(0,r.kt)("h3",{id:"multi-node-performance-visualization"},"Multi-Node Performance Visualization"),(0,r.kt)("p",null,"The chart below shows the scaling performance across multiple nodes:"),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"WallTime(s) vs GPP nodes",src:n(69151).Z,width:"1200",height:"600"})),(0,r.kt)("p",null,"This benchmark shows consistent scaling with increasing node count. While not achieving perfect linear speedup, it reaches over 8\xd7 speedup at 16 nodes, indicating efficient parallelization. The drop in parallel efficiency beyond 8 nodes suggests some communication or load imbalance overhead, but the overall scalability remains solid."),(0,r.kt)("p",null,"To visualize the ",(0,r.kt)("strong",{parentName:"p"},"VASP output"),", you can use the following command:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"module load EB/apps ASE/3.24.0-gfbf-2024a\nase gui CONTCAR\n")),(0,r.kt)("p",null,"The output shown below was obtained from a run using 16 nodes and 112 MPI processes:"),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"VASP Output",src:n(14644).Z,width:"1185",height:"613"})))}d.isMDXComponent=!0},14644:(t,e,n)=>{n.d(e,{Z:()=>a});const a=n.p+"assets/images/OUTPUT_VASP-f65c21f15d2cd6970628c808d9760281.png"},69151:(t,e,n)=>{n.d(e,{Z:()=>a});const a=n.p+"assets/images/VASP_16_node_GPP-abcb148f69f4f788911e7cfc5a405bbc.png"},67957:(t,e,n)=>{n.d(e,{Z:()=>a});const a=n.p+"assets/images/VASP_1_node_GPP-f4c2edcd7e9ccf4586d95e5d784982b5.png"}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.