General Information for BLAST Developers on IBM-AIX Systems =========================================================== To compile the toolkit under AIX follow the steps in readme.unx SPECIAL NOTE: To build the 64-bit version type: $ env AIX_MODE=64 ./ncbi/make/makedis.csh or $ env AIX_MODE=64 ./ncbi/make/makedis.csh 2> log 1>&2 ! Korn shell users % env AIX_MODE=64 ./ncbi/make/makedis.csh >& log ! C shell users AIX Specific information ------------------------ The following files are the main platform dependent files 1. makedis.csh in ./ncbi/make 2. ibm64_auto.ncbi.mk and ibm_auto.ncbi.mk in ./ncbi/platform 3. ncbilcl.ibm in ./ncbi/corelib makedis.csh: This file identifies the machine model via uname -M and assigns the corresponding architecture. Currently, AIX Power3 is the only architecture explicitly targeted. All other architectures are identified as auto. auto refers to the compiler flag that will check the architecture and build corresponding executables. The auto flag assumes that the execution environment is the same as the compilation environment. ibm_xxxx.ncbi.mk: Currently xxxx can be either auto64 or auto. auto64 builds the 64-bit version. This file contains compiler and loader flags specific for IBM. ncbilcl.ibm: Pre-processor defines / platform specific. Multi-threading --------------- When running multi-threaded it may be beneficial to set the following environment variables: AIXTHREAD_SCOPE=S MALLOCMULTIHEAP=true Addional benefit is possibly achieved by experimenting with the value of the environment variables SPINLOOPTIME and YIELDLOOPTIME. The user might initially try values of 500 for each of these and vary them to see the effect. These variables affect the behavior of a thread at the end of a parallel region. Generally, best application (though not necessarily system throughput) performance is achieved by putting an idle thread into a busy wait rather than letting it sleep. Setting SPINLOOPTIME and YIELDLOOPTIME to a suitable "large" number encourages the former behavior.