{"id":820,"date":"2018-08-20T14:49:45","date_gmt":"2018-08-20T13:49:45","guid":{"rendered":"https:\/\/portal.supercomputing.wales\/?page_id=820"},"modified":"2018-10-25T14:27:50","modified_gmt":"2018-10-25T13:27:50","slug":"development-environment","status":"publish","type":"page","link":"https:\/\/portal.supercomputing.wales\/index.php\/development-environment\/","title":{"rendered":"Development environment"},"content":{"rendered":"<p>The development environment on SCW is designed to maximise the usage of the system. We have a number of compilers and development libraries available.<\/p>\n<h4>Compilers<\/h4>\n<p>Compilers are available in the module system and can be accessed like any other module.<br \/>\n<pre class=\"preserve-code-formatting\">$ module load compiler\/intel\/2018<\/pre><br \/>\nThis will load the Intel compilers ifort, icc, icpc.<\/p>\n<p>Suggestions for compiler flags are:<br \/>\n<pre class=\"preserve-code-formatting\">-xHost : maximise optimisation for CPU being compiled on\n-xCORE-AVX512 : tune just for AVX-512 processors such as Skylake on SCW.\n-axCORE-AVX2,CORE-AVX512 : compile for multiple architectures and tune for each processor.<\/pre><br \/>\nOther compilers are available, please check using<br \/>\n<pre class=\"preserve-code-formatting\">$ module av compiler<\/pre><br \/>\nFor certain features there is a dependency between Intel Compiler and the currently available GCC (GNU Compiler Collection) compiler in the environment. For example, this is could be due to Intel C++ compiler using the GCC C++ library to maintain compatibility between Intel compiled C++ code and GCC. Therefore if newer features in C++ are required (maybe an updated standard) then you need to load a compatible GCC version with the required C++ standard supported. At time of writing Intel Compilers support GCC between version 4.3 and 6.3.<\/p>\n<p>To load a GCC compiler to use with Intel compiler just load the GCC module first.<br \/>\n<pre class=\"preserve-code-formatting\">$ module load compiler\/gnu\/5\n$ module load compiler\/intel\/2018<\/pre><\/p>\n<h4>MPI<\/h4>\n<p>MPI libraries can be loaded using for example<br \/>\n<pre class=\"preserve-code-formatting\">$ module load mpi\/intel\/2018<\/pre><br \/>\nThis will provide the mpif90, mpicc and mpic++ (and Intel versions mpiifort, mpiicc, mpiicpc)<\/p>\n<p>Be careful about using OpenMP and MPI together. Recent versions of Intel MPI library now use the multi-threaded libraries by default but depending on MPI implementation you might need to check what you want. Threading behaviour changes the response from MPI_Init_Thread.<\/p>\n<p>Other MPI libraries are available, please check using<br \/>\n<pre class=\"preserve-code-formatting\">$ module av mpi<\/pre><\/p>\n<h4>CUDA<\/h4>\n<p>To maximise the use of the NVIDIA GPU nodes available in SCW we can use the CUDA library. This can be loaded using<br \/>\n<pre class=\"preserve-code-formatting\">$ module load CUDA<\/pre><br \/>\nThe NVIDIA compiler is then added to your PATH and you can compile using nvcc.<\/p>\n<h4>Other tools<\/h4>\n<p>There are a number of tools available and others planned to follow. Please get in touch if specific help is required.<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The development environment on SCW is designed to maximise the usage of the system. We have a number of compilers and development libraries available. Compilers Compilers are available in the module system and can be accessed like any other module. $ module load compiler\/intel\/2018 This will load the Intel compilers ifort, icc, icpc. Suggestions for [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_lmt_disableupdate":"","_lmt_disable":"","footnotes":""},"class_list":["post-820","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/portal.supercomputing.wales\/index.php\/wp-json\/wp\/v2\/pages\/820","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/portal.supercomputing.wales\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/portal.supercomputing.wales\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/portal.supercomputing.wales\/index.php\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/portal.supercomputing.wales\/index.php\/wp-json\/wp\/v2\/comments?post=820"}],"version-history":[{"count":6,"href":"https:\/\/portal.supercomputing.wales\/index.php\/wp-json\/wp\/v2\/pages\/820\/revisions"}],"predecessor-version":[{"id":881,"href":"https:\/\/portal.supercomputing.wales\/index.php\/wp-json\/wp\/v2\/pages\/820\/revisions\/881"}],"wp:attachment":[{"href":"https:\/\/portal.supercomputing.wales\/index.php\/wp-json\/wp\/v2\/media?parent=820"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}