{"id":710,"date":"2013-05-31T15:02:07","date_gmt":"2013-05-31T15:02:07","guid":{"rendered":"http:\/\/ri.itservices.manchester.ac.uk\/csf-apps\/?page_id=710"},"modified":"2014-11-28T12:09:17","modified_gmt":"2014-11-28T12:09:17","slug":"acml","status":"publish","type":"page","link":"https:\/\/ri.itservices.manchester.ac.uk\/csf-apps\/software\/applications\/acml\/","title":{"rendered":"AMD Core Math Library (ACML)"},"content":{"rendered":"<h2>Overview<\/h2>\n<p>ACML provides a free set of thoroughly optimized and threaded math routines for HPC, scientific, engineering and related compute-intensive applications.<\/p>\n<p>The ACML should be used with the AMD Open64 compiler.<\/p>\n<h2>Restrictions on Use<\/h2>\n<p>There are no restrictions on accessing the ACML but please read the AMD ACML <a href=\"http:\/\/developer.amd.com\/wordpress\/media\/2012\/10\/ACML-EULA.pdf\">End User License Agreement<\/a> (pdf).<\/p>\n<h2>Set Up Procedure<\/h2>\n<p>Before using ACML load the appropriate module according to the target AMD architecture and serial\/parallel nature.<\/p>\n<table class=\"striped\">\n<tbody>\n<tr>\n<th valign=\"top\" width=\"35%\">Platform<\/th>\n<th valign=\"top\" width=\"65%\">modulefile<\/th>\n<\/tr>\n<tr>\n<td>Single-threaded<\/td>\n<td><code>module load libs\/open64\/acml\/5.3.1<\/code><\/td>\n<\/tr>\n<tr>\n<td>Single-threaded (64bit integers)<\/td>\n<td><code>module load libs\/open64\/acml\/5.3.1_int64<\/code><\/td>\n<\/tr>\n<tr>\n<td>Single-threaded<\/td>\n<td><code>module load libs\/open64\/acml\/5.1.0<\/code><\/td>\n<\/tr>\n<tr>\n<td>Multi-threaded<\/td>\n<td><code>module load libs\/open64\/acml\/5.3.1_mp<\/code><\/td>\n<\/tr>\n<tr>\n<td>Multi-threaded (64bit integers)<\/td>\n<td><code>module load libs\/open64\/acml\/5.3.1_mp_int64<\/code><\/td>\n<\/tr>\n<tr>\n<td>Multi-threaded<\/td>\n<td><code>module load libs\/open64\/acml\/5.1.0_mp<\/code><\/td>\n<\/tr>\n<tr>\n<td>Single-threaded with FMA4 support (Bulldozer)<\/td>\n<td><code>module load libs\/open64\/acml\/5.3.1_bd<\/code><\/td>\n<\/tr>\n<tr>\n<td>Single-threaded with FMA4 support (Bulldozer, 64bit integers)<\/td>\n<td><code>module load libs\/open64\/acml\/5.3.1_bd_int64<\/code><\/td>\n<\/tr>\n<tr>\n<td>Single-threaded with FMA4 support (Bulldozer)<\/td>\n<td><code>module load libs\/open64\/acml\/5.1.0_bd<\/code><\/td>\n<\/tr>\n<tr>\n<td>Multi-threaded with FMA4 support (Bulldozer)<\/td>\n<td><code>module load libs\/open64\/acml\/5.3.1_bd_mp<\/code><\/td>\n<\/tr>\n<tr>\n<td>Multi-threaded with FMA4 support (Bulldozer, 64bit integers)<\/td>\n<td><code>module load libs\/open64\/acml\/5.3.1_bd_mp_int64<\/code><\/td>\n<\/tr>\n<\/tbody>\n<tr>\n<td>Multi-threaded with FMA4 support (Bulldozer)<\/td>\n<td><code>module load libs\/open64\/acml\/5.1.0_bd_mp<\/code><\/td>\n<\/tr>\n<\/table>\n<p>In both cases the environment variables <code>ACMLROOT<\/code> and <code>BLASLIB<\/code> will be set for use in command-lines or in a Makefile for convenience.<\/p>\n<p>FMA4 support refers to the fused multiply-add instructions available in the Bulldozer (Interlagos) nodes.<\/p>\n<h2>Linking against ACML<\/h2>\n<p>Static <code>libacml.a<\/code> and dynamic <code>libacml.so<\/code> libraries are available. Multi-threaded libraries are named <code>libacml_mp.a<\/code> and <code>libacml_mp.so<\/code>. Do not add <code>_fma4<\/code> or <code>_bd<\/code> to the library names &#8211; the choice of bulldozer or not is made in the directory names set by the modulefile.<\/p>\n<p>Once you have loaded the appropriate modulefile the following compilation examples can be used:<\/p>\n<pre>\r\n# First start an interactive session on a bulldozer node\r\nqrsh -l bulldozer -l inter\r\n\r\n# Load the compiler modulefile\r\nmodule load compilers\/amd\/4.5.2.1\r\n\r\n# Load the ACML modulefile (see above)\r\nmodule load ....\r\n\r\n# Single-threaded FORTRAN\r\nopenf90 -o mycode.exe mycode.f -L$ACMLROOT\/lib -lacml\r\n\r\n# Multi-threaded FORTRAN (notice the -mp flag to enable OpenMP and the acml_mp library name)\r\nopenf90 -o my_omp_code.exe -mp my_omp_code.f -L$ACMLROOT\/lib -lacml_mp\r\n\r\n# Single-threaded C (note additional libraries required)\r\nopencc -o mycode.exe  mycode.c -I$ACMLROOT\/include -L$ACMLROOT\/lib -lacml -lfortran -lffio -lm -lrt\r\n\r\n# Multi-threaded C (notice the -mp flag to enable OpenMP and the acml_mp library name)\r\nopencc -o my_omp_code.exe -mp my_omp_code.c -I$ACMLROOT\/include -L$ACMLROOT\/lib -lacml_mp -lfortran -lffio -lm -lrt\r\n\r\n<\/pre>\n<p>If using the environment variables in a <em>Makefile<\/em> then you should use <code>$(ACMLROOT)<\/code> because Makefiles require environment variable names to be enclosed in parentheses. For example:<\/p>\n<pre>\r\nmycode.exe: mycode.f\r\n        openf90 -o $@ -L$(ACMLROOT)\/lib -lacml $<\r\n<\/pre>\n<h2>Further Inforamtion<\/h2>\n<p>The AMD <a href=\"http:\/\/developer.amd.com\/tools-and-sdks\/cpu-development\/amd-core-math-library-acml\/\">AMD ACML pages<\/a> provides further documentation and help on all aspects of the ACML.<\/p>\n<h2>Updates<\/h2>\n<p>None.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Overview ACML provides a free set of thoroughly optimized and threaded math routines for HPC, scientific, engineering and related compute-intensive applications. The ACML should be used with the AMD Open64 compiler. Restrictions on Use There are no restrictions on accessing the ACML but please read the AMD ACML End User License Agreement (pdf). Set Up Procedure Before using ACML load the appropriate module according to the target AMD architecture and serial\/parallel nature. Platform modulefile Single-threaded.. <a href=\"https:\/\/ri.itservices.manchester.ac.uk\/csf-apps\/software\/applications\/acml\/\">Read more &raquo;<\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"parent":31,"menu_order":0,"comment_status":"open","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-710","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/ri.itservices.manchester.ac.uk\/csf-apps\/wp-json\/wp\/v2\/pages\/710","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ri.itservices.manchester.ac.uk\/csf-apps\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/ri.itservices.manchester.ac.uk\/csf-apps\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/ri.itservices.manchester.ac.uk\/csf-apps\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/ri.itservices.manchester.ac.uk\/csf-apps\/wp-json\/wp\/v2\/comments?post=710"}],"version-history":[{"count":11,"href":"https:\/\/ri.itservices.manchester.ac.uk\/csf-apps\/wp-json\/wp\/v2\/pages\/710\/revisions"}],"predecessor-version":[{"id":2063,"href":"https:\/\/ri.itservices.manchester.ac.uk\/csf-apps\/wp-json\/wp\/v2\/pages\/710\/revisions\/2063"}],"up":[{"embeddable":true,"href":"https:\/\/ri.itservices.manchester.ac.uk\/csf-apps\/wp-json\/wp\/v2\/pages\/31"}],"wp:attachment":[{"href":"https:\/\/ri.itservices.manchester.ac.uk\/csf-apps\/wp-json\/wp\/v2\/media?parent=710"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}