问题标签 [openblas]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
652 浏览

python - 在 Windows 和 CPU 上使用 Theano 的 CNN 需要 OpenBLAS

在 keras 中训练卷积神经网络时出现此错误(此处)。(Windows 8.1 上的 ipython)。

我已经检查了 numpy 配置。它说它有 blas_mkl 但没有 OpenBLAS。blas_mkl 还不够吗?

我试图按照theano页面(此处)中的步骤安装OpenBLAS:

  1. 我无法使用MinGW shell/cmd 中的“quickbuild.win32 1>log.txt 2>err.txt”命令编译 OpenBLAS。弹出一个对话框说选择一个程序来运行它。

  2. 因此,无法提取 libopenblas.dll

  3. 它非常不清楚如何修改 .theanorc 或 .theanorc.txt

有人可以帮我在 Windows 上安装 OpenBLAS,以便我可以在 ipython 上使用 keras。

0 投票
1 回答
399 浏览

linux - 用于 travis-ci 的 libopenblas:混合 blas、lapack、atlas、openblas

我有 travis-ci测试脚本,其中必须安装系统 blas+lapack、atlas 和 openblas:

libblas-dev、liblapack-dev、libatlas-base-dev、libopenblas-base、libopenblas-dev

所有提到的软件包都不能立即工作;引入 libopenblas 软件包正在搞乱 travis-ci 的虚拟 linux 服务器。

有人对 Linux 和这些包有类似的经验吗?

0 投票
1 回答
251 浏览

c++ - 添加/包含在 CMake 中找到包的 Cmake

我找到了这个 CMake 来找到OpenBLAS,但我找不到如何将它作为外部文件包含在内的方法。

我想到的就像 C/C++ 中的#include。我试着用谷歌搜索一下,我得到了关于如何将项目包含到 CMake 中的答案。

这样做的主要原因是我想让我的 CMake 尽可能干净和小,因为这是我第一次深入 CMake 世界。

0 投票
1 回答
580 浏览

r - 如何使用我的所有 Amazon EC2 内核在 R 中执行并行模拟?

我想在 R 中运行 1000 次模拟迭代。每次迭代需要 20 秒,这需要大约 6 个小时的串行时间。而且我有几十个模拟要运行,每个都有 1000 次迭代。所以我想用并行计算在更短的时间内完成这项工作。

我对此很陌生。在阅读了网络上的资料后,我现在使用 Amazon 的 EC2 服务,使用 Louis Aslett 提供的 RStudio Server 和 OpenBLAS 运行 AMI。加载到 AMI 的软件的详细信息在这里:http ://www.louisaslett.com/RStudio_AMI 。

我尝试了几个 EC2 实例,目前正在使用具有 36 个内核的 c4.8xlarge ubuntu 实例。或虚拟内核,我不完全确定区别。

我的问题是我似乎无法在可用的 36 个内核附近使用任何地方。我已经成功使用了多达 10 个内核,但是当我尝试使用 >10 个内核时出现错误。

这是重现错误的最少代码(使用汽车数据集):

当我在 makeCluster() 语句中指定 10 个内核时,该代码通常可以正常工作。它生成一个包含 10 个元素的列表,每个元素由 10 个核心中的一个生成。但是指定 >10 个核心(即如上所述)通常会导致错误,例如我在下面粘贴的内容。

正如我上面提到的,我是新手,我的代码基于我在网上找到的一个示例,该示例旨在在单台多核计算机(而不是 EC2 机器)上运行。所以我意识到我可能为了在 EC2 上运行而错误地指定了 makeCluster() 语句。

我将不胜感激任何帮助或建议以使其正常工作!

非常感谢,

马克 B。

这是我尝试使用 >10 个内核时遇到的错误:

0 投票
1 回答
974 浏览

opencv - 将 OpenCV 的 Mat 容器与 blas 接口以进行矩阵乘法

我正在处理 UHD (2160 x 3840) 图像。我所做的处理之一是在 X 和 Y 轴上处理 Sobel 滤波,然后我必须将每个输出矩阵乘以它的转置,然后将梯度图像处理为梯度总和的平方根。

所以:S = sqrt(S_x * S_x^t + S_y * S_y^t)。

由于图像的尺寸,OpenCV 需要 20 秒来处理没有多线程的图像和 10 秒的多线程处理。

我知道 OpenCV 调用 OpenCL 是为了加快过滤操作,所以我认为可能需要很长时间才能尝试从过滤步骤中获得性能。

对于矩阵乘法,我从 OpenCV 的 OpenCL gemm 内核实现中遇到了一种不稳定性。

所以我想尝试使用 OpenBLAS insted。

我的问题是:

1.)

我编写了以下代码,但我遇到了接口 OpenCV 的 Mat 对象的一些问题:

我尝试按照此处指定的方式组织数据:http: //www.netlib.org/lapack/explore-html/db/dc9/group__single__blas__level3.html#gafe51bacb54592ff5de056acabd83c260

没有成功。这是我的主要问题

2.)我在想,为了尝试加快我的实施速度,以应用此处说明的分而治之的方法:

https://en.wikipedia.org/wiki/Matrix_multiplication_algorithm

但是对于只有四个子矩阵。有没有人尝试过一些类似的方法或获得了更好的方法来获得矩阵乘法的性能(不使用 GPU)?

预先感谢您的任何帮助。

0 投票
1 回答
1298 浏览

gcc - 无法识别的命令行选项'--exclude-libs=libpthread.a' openblas mingw-w64

我正在尝试在 Windows 10 系统上编译 openBLAS (0.2.18 from here )。我已经安装了 mingw、msys(使用 perl、gfortran 等)和 mingw-w64(基本上按照这里的过程)。

进入编译,我运行得到以下错误:

gcc.exe:错误:无法识别的命令行选项“--exclude-libs=libpthread.a”

似乎“库名称可以用逗号或冒号分隔”并且不接受使用“=”。所以我试图弄清楚这个命令行选项是如何/在哪里被指定的,包括在源目录中搜索“exclude”、“libpthread”并查看各种makefile,但没有任何运气。

我对没有正确语法的命令行选项是否正确?有没有人有任何想法如何追踪它被指定的位置,或者有任何关于 make 如何生成这样一个命令行选项的参考?

作为参考,整个命令是:

并在make进入目录后发生/c/tcm/xianyi-OpenBLAS-3f6398a/exports

0 投票
1 回答
1881 浏览

c++ - OpenBlas 和 g++

我已经在 TX1 中安装了 OpenBlas,并且 time_dgemm 示例使用 gcc 编译得很好。但是,我需要能够使用 g++ 将我的其余代码与 OpenBlas 链接起来。当我尝试使用 g++ 编译 time_dgemm 示例时,它失败,给出链接错误“... undefined reference to 'dgemm_(......”。唯一的变化是使用 g++ 而不是 gcc。

正如其他人过去建议的那样,我尝试使用 g++(make CC=g++)编译 OpenBLAS 库,但是当它尝试编译 BLAS 的某些部分时编译失败。

有任何想法吗?

0 投票
0 回答
975 浏览

linux - CMake链接OpenBLAS共享库非法指令

我有一个关于使用 CMake 链接共享库的问题。

从源代码构建 OpenBLAS 并成功安装后。在 /opt/OpenBLAS/include 中有头文件,在 /opt/OpenBLAS/lib 中有共享库和静态库。

如果我有一个名为 cpp_gemm.cpp 的玩具程序,我可以通过键入来构建它

并在没有错误消息的情况下执行它。

但是我想用 CMake 来构建它,所以我在 CMakeLists.txt 中编写了以下规则

在我创建构建文件夹并进入它之后,我输入

成功构建程序。但我会得到

执行后。

谷歌搜索相关问题后,发现replace

可以解决我的问题。也就是说,我可以成功构建程序并执行它而不会出现错误消息。

我很困惑,但我找不到任何材料来实现它。谁能告诉我为什么会这样?非常感谢!

0 投票
1 回答
687 浏览

c# - Multi-threaded operations

I was working on solving a tri-diagonal system with Math.Net. I've installed the MKL (x86) and the OpenBLAS extension, but apparently when I see the CPU usage I only see one core is working. This is the code

This is of course a much simplified version of the actual code, but nothing helps in using more than 1 CPU.

The code is compiled in Release with optimizations enabled, and I tried both "Any CPUs" and "x64".

Am I doing something wrong?

[EDIT] Forgot to mention but A and b might change during the for loop, ergo, I can't parallelise the for loop. This question is more orientated on "How can I force Math.Net to use the multithreaded wrapper of its LA provider?"

0 投票
1 回答
3464 浏览

performance - 浮点数与定点数:Intel I5 CPU 上的速度

我有一个 C/C++ 程序,它涉及密集的 32 位浮点矩阵数学计算,例如加法、减法、乘法、除法等。

我可以通过将32 位浮点数转换为16 位定点数来加速我的程序吗?我可以获得多少速度增益?

目前我正在使用 Intel I5 CPU。我正在使用 Openblas 执行矩阵计算。我应该如何重新实现诸如cblas_dgemm之类的 Openblas 函数来执行定点计算?

我知道 SSE(Simple SIMD Extensions)一次对 4x32=8x16=128 位数据进行操作,即 4 个 32 位浮点类型或 8 个 16 位定点类型。我猜从 32 位浮点数转换为 16 位定点数后,我的程序会快两倍。