Tag: blas

如何在Opensuse 12.2上构建Gotoblas2

使用默认的make文件在我的x86_64上构建GotoBlas2时,遇到以下构建错误: gcc -O2 -DEXPRECISION -m128bit-long-double -Wall -m64 -DF_INTERFACE_GFORT -fPIC -DSMP_SERVER -DMAX_CPU_NUMBER = 8 -DASMNAME = -DASMFNAME = _ -DNAME = _ -DCNAME = -DCHAR_NAME = \“_ \” – DCHAR_CNAME = \“\”-I .. -w -o linktest linktest.c ../libgoto2_nehalemp-r1.13.so -L / usr / lib64 / gcc / x86_64-suse-linux / 4.7 -L / usr / lib64 / gcc […]

cblas_dgemm – 仅在(beta)为2的幂时起作用

我完全难过了。 我有一个用c编写的相当大的递归程序,它调用cblas_dgemm()。 结果由正常工作的程序独立validation。 C = alpha*A*B + beta*C 在使用随机矩阵和所有可能的参数组合的重复测试中,程序仅在abs(beta)= 2 ^ n(1,2,4,8 ..)时给出正确的答案。 任何值都适用于alpha。 β的任何其他正/负,奇数/偶数值在10-30%的时间内给出正确的答案。 我正在使用Ubuntu 10.04,GCC 4.4.x,我已经尝试过系统安装的blas / cblas / atlas以及手动编译的图集。 任何提示或建议将不胜感激。 我对在这个网站潜伏的非常慷慨(和聪明)的人感到惊讶。 提前感谢你们, 拉斯

BLAS和LAPACK库是否符合MISRA标准?

我猜答案是否定的 。 但是,我想知道是否有人对此话题有所了解。 BLAS和LAPACK库是否符合MISRA标准? MISRA标准(MISRA C:1998,MISRA C:2004,MISRA C:2012)极其苛刻,我相信BLAS和LAPACK库不符合它。 因此,如果我的软件项目要求MISRA合规,我不应该使用这样的库。 对这个问题的任何见解都将受到极大的赞赏:)

无法将c代码链接到lapack / blas:未定义的引用

我已经尝试了几个小时,它让我发疯。 我得到的最后一个错误是: demo_cblas.c:(.text+0x83): undefined reference to `clapack_sgetrf’ demo_cblas.c:(.text+0xa3): undefined reference to `clapack_sgetri’ 我正在使用编译代码 /usr/bin/gcc -o demo_cblas demo_cblas.c -L /usr/lib64 -l :libgfortran.so.3 -L /usr/lib64 \ -llapack -L /usr/lib64 -lblas 我尝试使用和不使用libgfortran,使用不同的编译器gcc-33,gcc-47,gcc-48。 测试代码不是来自我,而是来自这个论坛…… #include #include #include #include “clapack.h” #include “cblas.h” void invertMatrix(float *a, unsigned int height){ int info, ipiv[height]; info = clapack_sgetrf(CblasColMajor, height, height, a, height, ipiv); info […]

在BLAS库中调用DDOT函数

我通过包含BLAS库在我的代码中调用BLAS函数,并且我的代码显然是错误的,因为编译器吐出错误: “ddot未在此范围内声明。” #include #include #include int main() { double m[10],n[10]; int i; int result; printf(“Enter the elements into first vector.\n”); for(i=0;i<10;i++) scanf("%lf",&m[i]); printf("Enter the elements into second vector.\n"); for(i=0;i<10;i++) scanf("%lf",&n[i]); result = ddot(m,n); printf("The result is %d\n",result); return 0; } 关于如何正确修复此代码的任何想法?

链接LAPACK / BLAS库

背景: 我正在研究一个用C和Fortran 77混合编写的项目,现在需要将LAPACK / BLAS库链接到项目(所有这些都在Linux环境中)。 有问题的LAPACK是netlib.org的3.2.1版(包括BLAS)。 使用顶级Makefile编译库(make lapacklib和make blaslib)。 问题: 在链接期间,错误消息声称从LAPACK例程调用的某些(并非所有)BLAS例程未定义。 这给了我一些头疼,但是当(在Makefile中)要链接的库的外观顺序发生变化时,问题最终得以解决。 码: 在下文中,(a)给出错误,而(b)没有。 链接由(c)执行。 (a)LIBS = $(LAPACK)/blas_LINUX.a $(LAPACK)/lapack_LINUX.a (b)LIBS = $(LAPACK)/lapack_LINUX.a $(LAPACK)/blas_LINUX.a (c)gcc -Wall -O -o $ @ project.o project.a $(LIBS) 题: 可能是仅仅是某些例程的未定义引用的原因以及使外观顺序相关的原因是什么?

计算矩阵产品AXA’的有效方法?

我目前正在使用BLAS函数DSYMM计算Y = AX然后使用DGEMM计算YA’ ,但我想知道是否有一些更有效的方法来计算矩阵乘积AXA T ,其中A是任意n×n矩阵和X是一个对称的n×n矩阵?

复制BLAS矩阵乘法性能:我能匹配吗?

背景 如果您一直关注我的post,我试图复制Kazushige Goto关于方阵乘法C = AB的开创性论文中的结果。 我在这里可以找到关于这个主题的最后一篇文章。 在我的代码版本中,我遵循Goto的内存分层和打包策略,内核使用128位SSE3内在函数计算2×8的C块。 我的CPU是i5-540M,超线程关闭。 有关我的硬件的其他信息可以在另一篇文章中找到,并在下面重复。 我的硬件 我的CPU是Intel i5 – 540M。 您可以在cpu-world.com上找到相关的CPUID信息。 微体系结构是Nehalem(westmere),因此理论上每循环每个核心可以计算4个双精度触发器。 我将只使用一个核心(没有OpenMP),因此,对于超线程关闭和4步Intel Turbo Boost,我应该看到( 2.533 Ghz + 4*0.133 Ghz ) * ( 4 DP flops/core/cycle ) * ( 1 core ) = 12.27 DP Gflops的峰值( 2.533 Ghz + 4*0.133 Ghz ) * ( 4 DP flops/core/cycle ) * ( 1 […]

cblas_dgemv出乎意料的结果

我有一个关于cblas_dgemv的问题。 我试图了解它是如何工作的。 而我可能做错了什么。 我有一个数组矩阵,然后我尝试读取矩阵RowMajor和ColumnMajor。 我在RowMajor Case中得到了预期的结果; [6,2,4,6]’。 然而对于ColMajor,当答案应该是[6,3,2,3]时,我得到[-7,3,0,5]’ 这是我的代码。 我使用的是英特尔MKL。 #include #include #include #include #define NCols 5 #define Nrows 4 double A[] = { 8, 4, 7, 3, 5, 1, 1, 3, 2, 1, 2, 3, 2, 0, 1, 1 , 2, 3, 4, 1}; double x[] = { -1, 2, -1, 1, 2 }; […]

静态链接LAPACK

我正在尝试发布一些软件,目前正在编写构建过程的脚本。 我陷入了一些我从未想过会发生的事情,在x86_64 linux上静态链接LAPACK。 在配置期间AC_SEARCH_LIB([main],[lapack])工作,但是lapack单元的编译不起作用,例如undefiend reference to ‘dsyev_’ no lapack / blas例程的不undefiend reference to ‘dsyev_’不被注意。 我已经确认我已经安装了库,甚至自己用适当的选项编译它们,使它们具有相同的结果。 这是我几年前第一次使用LAPACK时使用的一个例子,它可以动态地工作,但不是静态工作: http : //pastebin.com/cMm3wcwF 我用来编译的两个方法如下, gcc -llapack -o eigen eigen.c gcc -static -llapack -o eigen eigen.c