繁体   English   中英

GSL 真的在使用 Atlas 吗?

[英]Is GSL actually using Atlas?

我想在 Raspbian 上使用 Atlas 作为 GSL 的 BLAS 后端。 使用这些 make 选项:

ldflags = $(shell pkg-config --libs gsl) -L:libatlas.so.3

生成此链接步骤:

gcc -lgsl -lgslcblas -lm -L:libatlas.so.3 -o my-app main.o

最基本的示例构建并成功运行:

#include <stdio.h>
#include <gsl/gsl_blas.h>

int
main (void)
{
  double a[] = { 0.11, 0.12, 0.13,
                 0.21, 0.22, 0.23 };

  double b[] = { 1011, 1012,
                 1021, 1022,
                 1031, 1032 };

  double c[] = { 0.00, 0.00,
                 0.00, 0.00 };

  gsl_matrix_view A = gsl_matrix_view_array(a, 2, 3);
  gsl_matrix_view B = gsl_matrix_view_array(b, 3, 2);
  gsl_matrix_view C = gsl_matrix_view_array(c, 2, 2);

  /* Compute C = A B */

  gsl_blas_dgemm (CblasNoTrans, CblasNoTrans,
                  1.0, &A.matrix, &B.matrix,
                  0.0, &C.matrix);

  printf ("[ %g, %g\n", c[0], c[1]);
  printf ("  %g, %g ]\n", c[2], c[3]);

  return 0;
}

如何验证它是否使用 Atlas 后端? 要么进行运行时调用,要么在必要时通过 GDB 搞清楚。

答案基本上是

  1. 不,它没有使用 Atlas;
  2. 原因是ldflags中的库顺序声明需要是-L/usr/lib/arm-linux-gnueabihf/atlas -lblas -lgsl -lgslcblas -lm
  3. 你可以通过运行gdb , b cblas_dgemm ,对未来的库符号加载和运行说是。 如果您进入/usr/lib/arm-linux-gnueabihf/libblas.so.3 - 这是通过替代系统到 Atlas 的符号链接 - 那么是的,它正在使用 Atlas。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM