{"version":"1.0","provider_name":"UCT HPC","provider_url":"https:\/\/ucthpc.uct.ac.za","author_name":"Andrew Lewis","author_url":"https:\/\/ucthpc.uct.ac.za\/index.php\/author\/andrew-lewis\/","title":"Molecular visualization - UCT HPC","type":"rich","width":600,"height":338,"html":"<blockquote class=\"wp-embedded-content\" data-secret=\"0KAhuDKYY2\"><a href=\"https:\/\/ucthpc.uct.ac.za\/index.php\/2012\/08\/21\/molecular-visualization\/\">Molecular visualization<\/a><\/blockquote><iframe sandbox=\"allow-scripts\" security=\"restricted\" src=\"https:\/\/ucthpc.uct.ac.za\/index.php\/2012\/08\/21\/molecular-visualization\/embed\/#?secret=0KAhuDKYY2\" width=\"600\" height=\"338\" title=\"&#8220;Molecular visualization&#8221; &#8212; UCT HPC\" data-secret=\"0KAhuDKYY2\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\" class=\"wp-embedded-content\"><\/iframe><script type=\"text\/javascript\">\n\/*! This file is auto-generated *\/\n!function(c,d){\"use strict\";var e=!1,o=!1;if(d.querySelector)if(c.addEventListener)e=!0;if(c.wp=c.wp||{},c.wp.receiveEmbedMessage);else if(c.wp.receiveEmbedMessage=function(e){var t=e.data;if(!t);else if(!(t.secret||t.message||t.value));else if(\/[^a-zA-Z0-9]\/.test(t.secret));else{for(var r,s,a,i=d.querySelectorAll('iframe[data-secret=\"'+t.secret+'\"]'),n=d.querySelectorAll('blockquote[data-secret=\"'+t.secret+'\"]'),o=new RegExp(\"^https?:$\",\"i\"),l=0;l<n.length;l++)n[l].style.display=\"none\";for(l=0;l<i.length;l++)if(r=i[l],e.source!==r.contentWindow);else{if(r.removeAttribute(\"style\"),\"height\"===t.message){if(1e3<(s=parseInt(t.value,10)))s=1e3;else if(~~s<200)s=200;r.height=s}if(\"link\"===t.message)if(s=d.createElement(\"a\"),a=d.createElement(\"a\"),s.href=r.getAttribute(\"src\"),a.href=t.value,!o.test(a.protocol));else if(a.host===s.host)if(d.activeElement===r)c.top.location.href=t.value}}},e)c.addEventListener(\"message\",c.wp.receiveEmbedMessage,!1),d.addEventListener(\"DOMContentLoaded\",t,!1),c.addEventListener(\"load\",t,!1);function t(){if(o);else{o=!0;for(var e,t,r,s=-1!==navigator.appVersion.indexOf(\"MSIE 10\"),a=!!navigator.userAgent.match(\/Trident.*rv:11\\.\/),i=d.querySelectorAll(\"iframe.wp-embedded-content\"),n=0;n<i.length;n++){if(!(r=(t=i[n]).getAttribute(\"data-secret\")))r=Math.random().toString(36).substr(2,10),t.src+=\"#?secret=\"+r,t.setAttribute(\"data-secret\",r);if(s||a)(e=t.cloneNode(!0)).removeAttribute(\"security\"),t.parentNode.replaceChild(e,t);t.contentWindow.postMessage({message:\"ready\",secret:r},\"*\")}}}}(window,document);\n<\/script>\n","description":"Why is molecular visualization cool?&nbsp; Take a look at this animation from WEHI: &nbsp;One of the molecular visualization tools we support is NAMD.&nbsp; We recently updated our version from 2.7 to 2.9 and compiled it to run with OpenMPI rather than NAMD's own multi processor controler, CHARM.&nbsp; This makes resource requesting and job submission much easier.&nbsp; Below is the native NAMD method of addressing multiple cores in a distributed architecture:#PBS -N NAMD-CHARMRUN#PBS -l nodes=node1:ppn=4+node2:ppn=4+node3:ppn=4+node4:ppn=4+node5:ppn=4charmrun namd2 +p20 ++remote-shell ssh ++nodelist machine.file test.namd &gt; charmout.txtNow instead of using the above cumbersome method the standard mpirun executable can be called:#PBS -N NAMD=MPIRUN#PBS -l nodes=5:ppn=4:series200mpirun -hostfile $PBS_NODEFILE namd2 test.namd &gt; mpiout.txtThis also functions much better with PBStorque as it's designed to work hand in glove with OpenMPI.&nbsp; In the 2nd example you'll note that it's no longer necessary to tell mpirun or namd how many processors are required, it works that out from the job requirements, 5 nodes x 4 cores = 20 cores total.Below is the method we used to compile NAMD with OpenMPI support:Unpack NAMD and matching Charm++ source code and enter directory:&nbsp; tar xzf NAMD_2.9_Source.tar.gz&nbsp; cd NAMD_2.9_Source&nbsp; tar xf charm-6.4.0.tar&nbsp; cd charm-6.4.0Build and test the Charm++\/Converse library (MPI version):&nbsp; env MPICXX=mpicxx .\/build charm++ mpi-linux-x86_64 --with-production&nbsp; cd mpi-linux-x86_64\/tests\/charm++\/megatest&nbsp; make pgm&nbsp; mpirun -n 4 .\/pgm&nbsp;&nbsp;&nbsp; (run as any other MPI program on your cluster)&nbsp; cd ..\/..\/..\/..\/..Download and install TCL and FFTW libraries:&nbsp; (cd to NAMD_2.9_Source if you're not already there)&nbsp; wget http:\/\/www.ks.uiuc.edu\/Research\/namd\/libraries\/fftw-linux-x86_64.tar.gz&nbsp; tar xzf fftw-linux-x86_64.tar.gz&nbsp; mv linux-x86_64 fftw&nbsp; wget http:\/\/www.ks.uiuc.edu\/Research\/namd\/libraries\/tcl8.5.9-linux-x86_64.tar.gz&nbsp; wget http:\/\/www.ks.uiuc.edu\/Research\/namd\/libraries\/tcl8.5.9-linux-x86_64-threaded.tar.gz&nbsp; tar xzf tcl8.5.9-linux-x86_64.tar.gz&nbsp; tar xzf tcl8.5.9-linux-x86_64-threaded.tar.gz&nbsp; mv tcl8.5.9-linux-x86_64 tcl&nbsp; mv tcl8.5.9-linux-x86_64-threaded tcl-threadedSet up build directory and compile:&nbsp; MPI version: .\/config Linux-x86_64-g++ --charm-arch mpi-linux-x86_64&nbsp; cd Linux-x86_64-g++&nbsp; makeQuick tests using one and two processes (network version):&nbsp; (this is a 66-atom simulation so don't expect any speedup)&nbsp; .\/namd2&nbsp; .\/namd2 src\/alanin&nbsp; .\/charmrun ++local +p2 .\/namd2&nbsp; .\/charmrun ++local +p2 .\/namd2 src\/alanin&nbsp; (for MPI version, run namd2 binary as any other MPI executable)Longer test using four processes:&nbsp; wget http:\/\/www.ks.uiuc.edu\/Research\/namd\/utilities\/apoa1.tar.gz&nbsp; tar xzf apoa1.tar.gz&nbsp; .\/charmrun ++local +p4 .\/namd2 apoa1\/apoa1.namd&nbsp; (FFT optimization will take a several seconds during the first run.)&nbsp;"}