我试图在Ubuntu10.04上编译岩浆库,但是我被困住了。
来自自述文件:
若要安装MAGMA,请修改make.inc文件以指示在系统上安装CUDA、CPU BLAS和LAPACK的位置。示例 以make.inc.mkl、make.inc.acml、make.inc.goto和 make.inc.atlas,演示如何相应地链接到MKL,ACML, 去布拉斯或阿拉斯布拉斯。经过适当的修改后的make.inc 键入'make‘的文件将创建目录'lib’中的libmagma.a和libmagmablas.a库),以测试目录' testing‘中的驱动程序。
因此,我安装了所需的软件包:
apt-get install libatlas-base-dev liblapack-dev libf2c2-dev gfortran将make.inc.atlas复制到修改CUDA路径、nvcc路径和liblapack.a路径的make.inc,然后删除两个不必要的链接目录。
为了提供完整的参考,下面是原始的make.inc.atlas
#//////////////////////////////////////////////////////////////////////////////
# -- MAGMA (version 1.3.0) --
# Univ. of Tennessee, Knoxville
# Univ. of California, Berkeley
# Univ. of Colorado, Denver
# November 2012
#//////////////////////////////////////////////////////////////////////////////
#
# GPU_TARGET specifies for which GPU you want to compile MAGMA:
# "Tesla" (NVIDIA compute capability 1.x cards)
# "Fermi" (NVIDIA compute capability 2.x cards)
# See http://developer.nvidia.com/cuda-gpus
GPU_TARGET = Fermi
CC = gcc
NVCC = nvcc
FORT = gfortran
ARCH = ar
ARCHFLAGS = cr
RANLIB = ranlib
OPTS = -O3 -DADD_
F77OPTS = -O3 -DADD_
FOPTS = -O3 -DADD_ -x f95-cpp-input
NVOPTS = -O3 -DADD_ --compiler-options -fno-strict-aliasing -DUNIX
LDOPTS = -fPIC -Xlinker -zmuldefs
LIB = /home/tomov/LIB/lapack-lite-3.1.1/lapack_LINUX64.a \
-lf77blas -latlas -lcblas -lf2c -lcublas -lm
CUDADIR = /usr/local/cuda-3.0
LIBDIR = -L/home/tomov/LIB/ATLAS/lib/Linux_UNKNOWNSSE2 \
-L/home/tomov/LIB/CLAPACK-3.1.1/F2CLIBS/ \
-L$(CUDADIR)/lib64
INC = -I$(CUDADIR)/include在这里,我修改的文件保存到make.inc中
#//////////////////////////////////////////////////////////////////////////////
# -- MAGMA (version 1.3.0) --
# Univ. of Tennessee, Knoxville
# Univ. of California, Berkeley
# Univ. of Colorado, Denver
# November 2012
#//////////////////////////////////////////////////////////////////////////////
#
# GPU_TARGET specifies for which GPU you want to compile MAGMA:
# "Tesla" (NVIDIA compute capability 1.x cards)
# "Fermi" (NVIDIA compute capability 2.x cards)
# See http://developer.nvidia.com/cuda-gpus
GPU_TARGET = Fermi
CC = gcc
NVCC = /usr/local/cuda-5.0/bin/nvcc
FORT = gfortran
ARCH = ar
ARCHFLAGS = cr
RANLIB = ranlib
OPTS = -O3 -DADD_
F77OPTS = -O3 -DADD_
FOPTS = -O3 -DADD_ -x f95-cpp-input
NVOPTS = -O3 -DADD_ --compiler-options -fno-strict-aliasing -DUNIX
LDOPTS = -fPIC -Xlinker -zmuldefs
LIB = /usr/lib/liblapack.a \
-lf77blas -latlas -lcblas -lf2c -lcublas -lm
CUDADIR = /usr/local/cuda-5.0
LIBDIR = -L$(CUDADIR)/lib64
INC = -I$(CUDADIR)/include所以,我运行make,我得到了这一错误。我在此应用了所提出的解决方案,到目前为止,编译工作还在继续:
make[1]: Entering directory `/usr/src/magma-1.3.0/testing'
gcc -O3 -DADD_ -DHAVE_CUBLAS -DGPUSHMEM=200 -I/usr/local/cuda-5.0/include -I../include -I../control -c /usr/local/cuda-5.0/src/fortran.c -o fortran.o
In file included from /usr/local/cuda-5.0/src/fortran.c:67:
/usr/local/cuda-5.0/src/fortran_common.h:405:2: error: #error unsupported Fortran compiler
make[1]: *** [fortran.o] Error 1
make[1]: Leaving directory `/usr/src/magma-1.3.0/testing'
make: *** [test] Error 2我能做什么?
发布于 2013-01-20 12:29:53
简单的解决方案:将堡垒设置为:
FORT = gfortran -DCUBLAS_GFORTRAN发布于 2013-01-17 12:14:28
这似乎是一个数据自动化系统的问题。打开fortran_common.h并定位此条件:
#if defined(CUBLAS_GFORTRAN) || defined (CUBLAS_G95)应该满足这个条件,AFAIK。但是它没有,所以只需删除该行,并删除所有其他elsif和endif行以及完整路径。文件fortran_common.h应该如下所示:
/*
* Copyright 1993-2012 NVIDIA Corporation. All rights reserved.
*
* NOTICE TO LICENSEE:
*
* This source code and/or documentation ("Licensed Deliverables") are
* subject to NVIDIA intellectual property rights under U.S. and
* international Copyright laws.
*
* These Licensed Deliverables contained herein is PROPRIETARY and
* CONFIDENTIAL to NVIDIA and is being provided under the terms and
* conditions of a form of NVIDIA software license agreement by and
* between NVIDIA and Licensee ("License Agreement") or electronically
* accepted by Licensee. Notwithstanding any terms or conditions to
* the contrary in the License Agreement, reproduction or disclosure
* of the Licensed Deliverables to any third party without the express
* written consent of NVIDIA is prohibited.
*
* NOTWITHSTANDING ANY TERMS OR CONDITIONS TO THE CONTRARY IN THE
* LICENSE AGREEMENT, NVIDIA MAKES NO REPRESENTATION ABOUT THE
* SUITABILITY OF THESE LICENSED DELIVERABLES FOR ANY PURPOSE. IT IS
* PROVIDED "AS IS" WITHOUT EXPRESS OR IMPLIED WARRANTY OF ANY KIND.
* NVIDIA DISCLAIMS ALL WARRANTIES WITH REGARD TO THESE LICENSED
* DELIVERABLES, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY,
* NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE.
* NOTWITHSTANDING ANY TERMS OR CONDITIONS TO THE CONTRARY IN THE
* LICENSE AGREEMENT, IN NO EVENT SHALL NVIDIA BE LIABLE FOR ANY
* SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, OR ANY
* DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
* WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
* ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THESE LICENSED DELIVERABLES.
*
* U.S. Government End Users. These Licensed Deliverables are a
* "commercial item" as that term is defined at 48 C.F.R. 2.101 (OCT
* 1995), consisting of "commercial computer software" and "commercial
* computer software documentation" as such terms are used in 48
* C.F.R. 12.212 (SEPT 1995) and is provided to the U.S. Government
* only as a commercial end item. Consistent with 48 C.F.R.12.212 and
* 48 C.F.R. 227.7202-1 through 227.7202-4 (JUNE 1995), all
* U.S. Government End Users acquire the Licensed Deliverables with
* only those rights set forth herein.
*
* Any use of the Licensed Deliverables in individual and commercial
* software must include, in the user documentation and internal
* comments to the code, the above Disclaimer and U.S. Government End
* Users Notice.
*/
/* Define CUBLAS_FORTRAN_COMPILER for Windows needed because
tbe compilation is done from the perl script fortran_nightly.pl which
does not include fortran_tools.mk
On Linux and Apple, CFLAGS is setup with fortran_tools.mk
*/
#if defined(_WIN32)
#ifndef CUBLAS_INTEL_FORTRAN
#define CUBLAS_INTEL_FORTRAN
#endif
#endif
#if defined(CUBLAS_GFORTRAN)
/* using option -ff2c make the ABI compatible with F77
No need to define RETURN_COMPLEX, which cause problem
on Gfortran 4.x on 32 bit
*/
/* #define RETURN_COMPLEX 1 */
#endif
/* NOTE: Must use -fno-second-underscore when building Fortran source with g77
* g77 invocation may not use -fno-f2c, which forces different return
* type conventions than the one used below
*/
#define CUBLAS_INIT cublas_init_
#define CUBLAS_SHUTDOWN cublas_shutdown_
#define CUBLAS_ALLOC cublas_alloc_
#define CUBLAS_FREE cublas_free_
#define CUBLAS_SET_VECTOR cublas_set_vector_
#define CUBLAS_GET_VECTOR cublas_get_vector_
#define CUBLAS_SET_MATRIX cublas_set_matrix_
#define CUBLAS_GET_MATRIX cublas_get_matrix_
#define CUBLAS_GET_ERROR cublas_get_error_
#define CUBLAS_XERBLA cublas_xerbla_
#define CUBLAS_ISAMAX cublas_isamax_
#define CUBLAS_ISAMIN cublas_isamin_
#define CUBLAS_SASUM cublas_sasum_
#define CUBLAS_SAXPY cublas_saxpy_
#define CUBLAS_SCOPY cublas_scopy_
#define CUBLAS_SDOT cublas_sdot_
#define CUBLAS_SNRM2 cublas_snrm2_
#define CUBLAS_SROT cublas_srot_
#define CUBLAS_SROTG cublas_srotg_
#define CUBLAS_SROTM cublas_srotm_
#define CUBLAS_SROTMG cublas_srotmg_
#define CUBLAS_SSCAL cublas_sscal_
#define CUBLAS_SSWAP cublas_sswap_
#define CUBLAS_CAXPY cublas_caxpy_
#define CUBLAS_CCOPY cublas_ccopy_
#define CUBLAS_CROT cublas_crot_
#define CUBLAS_CROTG cublas_crotg_
#define CUBLAS_CSCAL cublas_cscal_
#define CUBLAS_CSROT cublas_csrot_
#define CUBLAS_CSSCAL cublas_csscal_
#define CUBLAS_CSWAP cublas_cswap_
#define CUBLAS_CTRMV cublas_ctrmv_
#define CUBLAS_CDOTU cublas_cdotu_
#define CUBLAS_CDOTC cublas_cdotc_
#define CUBLAS_ICAMAX cublas_icamax_
#define CUBLAS_SCASUM cublas_scasum_
#define CUBLAS_SCNRM2 cublas_scnrm2_
#define CUBLAS_SGBMV cublas_sgbmv_
#define CUBLAS_SGEMV cublas_sgemv_
#define CUBLAS_SGER cublas_sger_
#define CUBLAS_SSBMV cublas_ssbmv_
#define CUBLAS_SSPMV cublas_sspmv_
#define CUBLAS_SSPR cublas_sspr_
#define CUBLAS_SSPR2 cublas_sspr2_
#define CUBLAS_SSYMV cublas_ssymv_
#define CUBLAS_SSYR cublas_ssyr_
#define CUBLAS_SSYR2 cublas_ssyr2_
#define CUBLAS_STBMV cublas_stbmv_
#define CUBLAS_STBSV cublas_stbsv_
#define CUBLAS_STPMV cublas_stpmv_
#define CUBLAS_STPSV cublas_stpsv_
#define CUBLAS_STRMV cublas_strmv_
#define CUBLAS_STRSV cublas_strsv_
#define CUBLAS_SGEMM cublas_sgemm_
#define CUBLAS_SSYMM cublas_ssymm_
#define CUBLAS_SSYR2K cublas_ssyr2k_
#define CUBLAS_SSYRK cublas_ssyrk_
#define CUBLAS_STRMM cublas_strmm_
#define CUBLAS_STRSM cublas_strsm_
#define CUBLAS_CGEMM cublas_cgemm_
#define CUBLAS_CHEMM cublas_chemm_
#define CUBLAS_CSYMM cublas_csymm_
#define CUBLAS_CTRMM cublas_ctrmm_
#define CUBLAS_CTRSM cublas_ctrsm_
#define CUBLAS_CHERK cublas_cherk_
#define CUBLAS_CSYRK cublas_csyrk_
#define CUBLAS_CHER2K cublas_cher2k_
#define CUBLAS_CSYR2K cublas_csyr2k_
#define CUBLAS_IDAMAX cublas_idamax_
#define CUBLAS_IDAMIN cublas_idamin_
#define CUBLAS_DASUM cublas_dasum_
#define CUBLAS_DAXPY cublas_daxpy_
#define CUBLAS_DCOPY cublas_dcopy_
#define CUBLAS_DDOT cublas_ddot_
#define CUBLAS_DNRM2 cublas_dnrm2_
#define CUBLAS_DROT cublas_drot_
#define CUBLAS_DROTG cublas_drotg_
#define CUBLAS_DROTM cublas_drotm_
#define CUBLAS_DROTMG cublas_drotmg_
#define CUBLAS_DSCAL cublas_dscal_
#define CUBLAS_DSWAP cublas_dswap_
#define CUBLAS_ZAXPY cublas_zaxpy_
#define CUBLAS_ZCOPY cublas_zcopy_
#define CUBLAS_ZROT cublas_zrot_
#define CUBLAS_ZROTG cublas_zrotg_
#define CUBLAS_ZSCAL cublas_zscal_
#define CUBLAS_ZDROT cublas_zdrot_
#define CUBLAS_ZDSCAL cublas_zdscal_
#define CUBLAS_ZSWAP cublas_zswap_
#define CUBLAS_ZDOTU cublas_zdotu_
#define CUBLAS_ZDOTC cublas_zdotc_
#define CUBLAS_IZAMAX cublas_izamax_
#define CUBLAS_DZASUM cublas_dzasum_
#define CUBLAS_DZNRM2 cublas_dznrm2_
#define CUBLAS_DGBMV cublas_dgbmv_
#define CUBLAS_DGEMV cublas_dgemv_
#define CUBLAS_ZGEMV cublas_zgemv_
#define CUBLAS_DGER cublas_dger_
#define CUBLAS_DSBMV cublas_dsbmv_
#define CUBLAS_DSPMV cublas_dspmv_
#define CUBLAS_DSPR cublas_dspr_
#define CUBLAS_DSPR2 cublas_dspr2_
#define CUBLAS_DSYMV cublas_dsymv_
#define CUBLAS_DSYR cublas_dsyr_
#define CUBLAS_DSYR2 cublas_dsyr2_
#define CUBLAS_DTBMV cublas_dtbmv_
#define CUBLAS_DTBSV cublas_dtbsv_
#define CUBLAS_DTPMV cublas_dtpmv_
#define CUBLAS_DTPSV cublas_dtpsv_
#define CUBLAS_DTRMV cublas_dtrmv_
#define CUBLAS_DTRSV cublas_dtrsv_
#define CUBLAS_DGEMM cublas_dgemm_
#define CUBLAS_DSYMM cublas_dsymm_
#define CUBLAS_DSYR2K cublas_dsyr2k_
#define CUBLAS_DSYRK cublas_dsyrk_
#define CUBLAS_ZSYRK cublas_zsyrk_
#define CUBLAS_DTRMM cublas_dtrmm_
#define CUBLAS_DTRSM cublas_dtrsm_
#define CUBLAS_ZGEMM cublas_zgemm_
#define CUBLAS_ZHEMM cublas_zhemm_
#define CUBLAS_ZSYMM cublas_zsymm_
#define CUBLAS_ZTRMM cublas_ztrmm_
#define CUBLAS_ZTRSM cublas_ztrsm_
#define CUBLAS_ZHERK cublas_zherk_
#define CUBLAS_ZSYRK cublas_zsyrk_
#define CUBLAS_ZHER2K cublas_zher2k_
#define CUBLAS_ZSYR2K cublas_zsyr2k_
#define CUBLAS_CGEMV cublas_cgemv_
#define CUBLAS_CGBMV cublas_cgbmv_
#define CUBLAS_CHEMV cublas_chemv_
#define CUBLAS_CHBMV cublas_chbmv_
#define CUBLAS_CHPMV cublas_chpmv_
#define CUBLAS_CTBMV cublas_ctbmv_
#define CUBLAS_CTPMV cublas_ctpmv_
#define CUBLAS_CTRSV cublas_ctrsv_
#define CUBLAS_CTBSV cublas_ctbsv_
#define CUBLAS_CTPSV cublas_ctpsv_
#define CUBLAS_CGERC cublas_cgerc_
#define CUBLAS_CGERU cublas_cgeru_
#define CUBLAS_CHPR cublas_chpr_
#define CUBLAS_CHPR2 cublas_chpr2_
#define CUBLAS_CHER cublas_cher_
#define CUBLAS_CHER2 cublas_cher2_
// stubs for zblat2
#define CUBLAS_ZGBMV cublas_zgbmv_
#define CUBLAS_ZHEMV cublas_zhemv_
#define CUBLAS_ZHBMV cublas_zhbmv_
#define CUBLAS_ZHPMV cublas_zhpmv_
#define CUBLAS_ZTRMV cublas_ztrmv_
#define CUBLAS_ZTBMV cublas_ztbmv_
#define CUBLAS_ZTPMV cublas_ztpmv_
#define CUBLAS_ZTRSV cublas_ztrsv_
#define CUBLAS_ZTBSV cublas_ztbsv_
#define CUBLAS_ZTPSV cublas_ztpsv_
#define CUBLAS_ZGERC cublas_zgerc_
#define CUBLAS_ZGERU cublas_zgeru_
#define CUBLAS_ZHER cublas_zher_
#define CUBLAS_ZHPR cublas_zhpr_
#define CUBLAS_ZHER2 cublas_zher2_
#define CUBLAS_ZHPR2 cublas_zhpr2_在这一变化之后,岩浆就可以编译了。
https://stackoverflow.com/questions/14378868
复制相似问题