2) They're almost always wrappers, not actual compilers. 3) They almost always depend on CPU compilers. We keep a separate knowledge base for MPI compilers to simplify compiler identification and because TAU doesn't require MPI for all configurations. """ from taucmdr.cf.compiler import Knowledgebase MPI_COMPILERS = Knowledgebase('MPI', 'Compilers supporting the Message Passing Interface (MPI)', CC=('MPI C', 'MPI_CC'), CXX=('MPI C++', 'MPI_CXX'), FC=('MPI Fortran', ('MPI_FC', 'MPI_F77', 'MPI_F90'))) SYSTEM = MPI_COMPILERS.add('System', show_wrapper_flags=['-show'], CC='mpicc', CXX=('mpic++', 'mpicxx', 'mpiCC'), FC=('mpiftn', 'mpif90', 'mpif77', 'mpifort')) INTEL = MPI_COMPILERS.add('Intel', show_wrapper_flags=['-show'], CC='mpiicc', CXX='mpiicpc', FC='mpiifort') IBM = MPI_COMPILERS.add('IBM', family_regex=r'^IBM XL', version_flags=['-qversion'], show_wrapper_flags=['-show'], CC=('mpixlc_r', 'mpixlc', 'mpicc'), CXX=('mpixlcxx_r', 'mpixlcxx', 'mpixlC_r', 'mpic++', 'mpicxx', 'mpiCC'), FC=('mpixlf_r', 'mpixlf', 'mpixlf90_r', 'mpixlf90', 'mpixlf95_r', 'mpixlf95', 'mpixlf2003_r', 'mpixlf2003', 'mpixlf2008_r', 'mpixlf2008', 'mpixlf77_r', 'mpixlf77', 'mpifort', 'mpif90', 'mpif77'))
"""SHMEM compiler knowledgebase. Keep a separate knowledge base for SHMEM compilers to simplify compiler identification and because TAU doesn't require SHMEM for all configurations. """ from taucmdr.cf.compiler import Knowledgebase SHMEM_COMPILERS = Knowledgebase( 'SHMEM', 'Compilers supporting Symmetric Hierarchical Memory', CC=('SHMEM C', 'SHMEM_CC'), CXX=('SHMEM C++', 'SHMEM_CXX'), FC=('SHMEM Fortran', ('SHMEM_FC', 'SHMEM_F77', 'SHMEM_F90'))) OPENSHMEM = SHMEM_COMPILERS.add('OpenSHMEM', CC='oshcc', CXX=('oshcxx', 'oshc++', 'oshCC'), FC='oshfort') SOS = SHMEM_COMPILERS.add('SOS', show_wrapper_flags=['-show'], CC='oshcc', CXX=('oshc++', 'oshCC'), FC='oshfort') CRAY_SHMEM = SHMEM_COMPILERS.add( 'Cray', family_regex=r'-I.*cray', version_flags=['-craype-verbose', '--version', '-E'], show_wrapper_flags=['-craype-verbose', '--version', '-E'], CC='cc', CXX='CC',
# # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE # DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # """CUDA compiler knowledgebase.""" from taucmdr.cf.compiler import Knowledgebase CUDA_COMPILERS = Knowledgebase('CUDA', 'Compilers supporting CUDA', CXX=('CUDA', 'CU'), FC=('CUDA Fortran', 'CUF')) NVIDIA = CUDA_COMPILERS.add('NVIDIA', CXX='nvcc') IBM = CUDA_COMPILERS.add('IBM', family_regex=r'^IBM XL', version_flags=['-qversion'], FC='xlcuf') CUDA_CXX = CUDA_COMPILERS.roles['CXX'] CUDA_FC = CUDA_COMPILERS.roles['FC']
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # """SHMEM compiler knowledgebase. Keep a separate knowledge base for SHMEM compilers to simplify compiler identification and because TAU doesn't require SHMEM for all configurations. """ from taucmdr.cf.compiler import Knowledgebase SHMEM_COMPILERS = Knowledgebase('SHMEM', 'Compilers supporting Symmetric Hierarchical Memory', CC=('SHMEM C', 'SHMEM_CC'), CXX=('SHMEM C++', 'SHMEM_CXX'), FC=('SHMEM Fortran', ('SHMEM_FC', 'SHMEM_F77', 'SHMEM_F90'))) OPENSHMEM = SHMEM_COMPILERS.add('OpenSHMEM', CC='oshcc', CXX=('oshcxx', 'oshc++', 'oshCC'), FC='oshfort') SOS = SHMEM_COMPILERS.add('SOS', show_wrapper_flags=['-show'], CC='oshcc', CXX=('oshc++', 'oshCC'), FC='oshfort') CRAY_SHMEM = SHMEM_COMPILERS.add('Cray', family_regex=r'-I.*cray', version_flags=['-craype-verbose', '--version', '-E'], show_wrapper_flags=['-craype-verbose', '--version', '-E'], CC='cc', CXX='CC', FC='ftn') SHMEM_CC = SHMEM_COMPILERS.roles['CC'] SHMEM_CXX = SHMEM_COMPILERS.roles['CXX'] SHMEM_FC = SHMEM_COMPILERS.roles['FC']
# be used to endorse or promote products derived from this software without # specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE # DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # """CUDA compiler knowledgebase.""" from taucmdr.cf.compiler import Knowledgebase CUDA_COMPILERS = Knowledgebase('CUDA', 'Compilers supporting CUDA', CXX=('CUDA', 'CU'), FC=('CUDA Fortran', 'CUF')) NVIDIA = CUDA_COMPILERS.add('NVIDIA', CXX='nvcc') IBM = CUDA_COMPILERS.add('IBM', family_regex=r'^IBM XL', version_flags=['-qversion'], FC='xlcuf') CUDA_CXX = CUDA_COMPILERS.roles['CXX'] CUDA_FC = CUDA_COMPILERS.roles['FC']
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # """ Python Interpreter Knowledgebase (implemented using the compiler classes) """ from taucmdr.cf.compiler import Knowledgebase PYTHON_INTERPRETERS = Knowledgebase( 'python', 'Compilers targeting different versions of Python', PY=('python', 'python') # language: python, envars: python ) PYTHON2 = PYTHON_INTERPRETERS.add('PY2_INTERPRETER', family_regex=r'^Python 2', version_flags=['--version'], PY=('python2', 'python')) PYTHON3 = PYTHON_INTERPRETERS.add('PY3_INTERPRETER', family_regex=r'^Python 3', version_flags=['--version'], PY=('python3', 'python')) PY = PYTHON_INTERPRETERS.roles['PY']
These are the principal compilers used by the system and **must** be identified to successfully configure and install TAU. """ from taucmdr.cf.compiler import Knowledgebase HOST_COMPILERS = Knowledgebase('Host', 'Compilers targeting the host CPU', CC=('C', 'CC'), CXX=('C++', 'CXX'), FC=('Fortran', ('FC', 'F77', 'F90')), UPC=('Universal Parallel C', 'UPC')) SYSTEM = HOST_COMPILERS.add('System', CC='cc', CXX=('c++', 'cxx', 'CC'), FC=('ftn', 'f90', 'f77'), UPC='upc') GNU = HOST_COMPILERS.add('GNU', family_regex=r'Free Software Foundation, Inc', CC='gcc', CXX='g++', FC=('gfortran', 'g77'), UPC='gupc') INTEL = HOST_COMPILERS.add('Intel', family_regex=r'Intel Corporation', CC='icc', CXX='icpc', FC='ifort')
# (3) Neither the name of ParaTools, Inc. nor the names of its contributors may # be used to endorse or promote products derived from this software without # specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE # DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # """CAF compiler knowledgebase. We keep a separate knowledge base for CAF compilers to simplify compiler identification and because TAU doesn't require CAF for all configurations. """ from taucmdr.cf.compiler import Knowledgebase CAF_COMPILERS = Knowledgebase('CAF', 'Compilers supporting Coarray Fortran', FC=('Coarray Fortran', ('FC', 'F77', 'F90'))) SYSTEM = CAF_COMPILERS.add('System', show_wrapper_flags=['-show'], FC='caf') CAF_FC = CAF_COMPILERS.roles['FC']