问题标签 [intel-mkl]

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 投票
1 回答
2920 浏览

c++ - 仍然是关于 Intel-MKL 的链接错误

这是QT项目的配置:

错误是 英特尔 mkl 链接错误

我已经链接了-lm标志,为什么?

更新:

更新2:

我已经使用该ldd命令查看 libmkl_core.so 需要哪些库,它没有显示 libm.so 或数学库。为什么在 Qt 创建者中,它显示undefined reference to 'logf'

0 投票
1 回答
1634 浏览

blas - 英特尔 MKL cblas_dgemm 文档错误?

这个链接是手册MKL

http://software.intel.com/sites/products/documentation/hpc/mkl/mklman/index.htm

这个链接是的例子cblas_dgemm

http://techpubs.sgi.com/library/tpl/cgi-bin/getdoc.cgi?cmd=getdoc&coll=0650&db=man&fname=3%20INTRO_CBLAS

在手册中,在,RowMajor他说是,是,是, 但是, 在例子中,NoTransANoTransBldarows(A)ldbrows(B)ldcrows(C)

lda和是, , _ ldb_ldccols(a)cols(b)cols(c)

怎么了?

0 投票
1 回答
983 浏览

matlab - 如何加快c++特征分解

我用MATLAB来做特征值分解,数据的维数大约是10000,所以协方差矩阵是10000*10000。当我eig()在 MATLAB 中使用该函数时,它非常慢。有什么方法可以加快特征值分解。我使用特征值分解来做主成分分析(PCA),所以我只使用前K个特征值和特征向量。不需要获取所有的特征值和特征向量。我曾尝试使用Intel-MKL进行特征分解,但是当我使用该mex接口时,出现了一些错误。我将其发布在链接https://stackoverflow.com/questions/19220271/how-to-use-intel-mkl-for-speed-my-own-matlab-mex-cpp-applications

请给我一些建议,谢谢。

0 投票
1 回答
943 浏览

visual-studio-2010 - 如何告诉 Visual Studio 找到 MKL 的 F95 接口

我在 Visual Studio (VS) 2010 和 Intel Parallel Studio Composer XE 2011 中使用 Intel Math Kernel Library (MKL) 10.3。我能够在 MKL 中使用 F77 接口到 Lapack,但不知道如何使用 F95 接口. 我应该在 Visual Studio 中做什么,以便链接器找到 F95 接口?

0 投票
2 回答
292 浏览

arrays - 使用 MKL/VML 解析复杂函数

我正在尝试计算一个相当复杂的函数,比如 func() - 涉及 fortran 中几个二维数组的几个加法、减法、乘法、除法和三角函数。计算是大规模并行的,因为每个 func() 独立于其行和列位置。每个矩阵的大小都是千兆字节,大约有十几个作为参数。

我想利用英特尔 MKL 函数(调用 --mkl-parallel),特别是 VML 函数来加、减、除等。我的问题是:如何渲染复杂的函数表达式,例如,

例如: func(x,y,z) = x*y+cos(z*xx) 其中 x,y,z 是几个 GB 的二维数组

在 VML 函数方面,但使用更熟悉的二元运算符。您会看到我的问题原则上需要将所有二进制运算符(例如“+”和“*”)转换为以 ?vadd(x,y) 为参数的二进制函数。当然,这对于大型表达式来说会非常麻烦且难看。有没有办法重载二进制算术运算符,例如“+”、“-”,以便在 fortran 中优先使用 MKL/VML 版本。一个例子会很好!谢谢!

0 投票
1 回答
1088 浏览

c++ - 英特尔 MKL 函数在内部调用 TerminateProcess()

我正在尝试在使用Embarcadero C++ Builder 2010 编写的程序中使用英特尔 MKL 库中的一些函数。我遇到了一些奇怪的行为,即调用任何一种 MKL 方法都会静默终止应用程序。事实证明,TerminateProcess()当调用任何方法时,库正在调用。我在找到应用程序终止的确切位置时遇到了一些麻烦,因为每次进入 MKL 方法并在 CPU 视图中逐条指令跟踪都会调用TerminateProcess不同位置的方法。

我的猜测是这是库捕获的错误情况。 据我所知,它是从 MKL 库中调用的,而不是从 RTL 的任何其他部分或外部错误例程或其他任何地方调用的。

什么可能导致这种情况?有没有人成功地将 MKL 与 C++Builder 程序一起使用?

症状

我有以下代码,基于二维 FFT(C 接口)示例:

当调用DftiCreateDescriptor. 因此,为了进行调查,我踏入了功能并走过了大会。它跳转到MKL_RT.DftiCreateDescriptor_s_md,然后我可以翻阅十页或更多页的程序集。在某些时候,它call的地址会变成TerminateProcess. 但是,它执行此操作的点感觉是随机的。例如,在某一时刻,我将它缩小到一个调用语句和地址,只是在我下次运行程序时它崩溃了。 编辑:ExitProcess自从我第一次问这个问题以来,我在, TerminateProcess,等处放置了断点TerminateThread,发现它正在调用TerminateProcess. (最初我不知道它为什么会无声地终止。)它这样做的点仍然在变化。没有有用的调用堆栈(这是测试程序,来源如下):

(这两个 MKL_RT.dll 行,在 CPU 视图中检查时,似乎没有使用正确的方法。这可能是因为它是发布代码并且调试器没有正确跟踪调用堆栈......或者它可能与问题有关。)

我也用其他几种 MKL 方法重现了这一点。使用FFTW3 兼容接口,有时会出现调用fftwf_malloc(有时不会),调用时总是出现fftwf_plan_dft_2d

更多细节

  • 我正在使用最新版本,2013 SP1。我只安装了 IA32 组件(因为 CB2010 是一个仅限 3​​2 位的编译器。)
  • 我正在使用单 DLL 链接选项进行链接,链接到mkl_rt.dll.
  • 但是,由于 mkl_rt.lib 是一个 COFF 文件,我使用 .lib 生成了一个新的 .lib implib -a mkl_rt.lib mkl_rt.dll。它创建了一个看起来不错的库,尽管警告了数百个重复符号。
  • 下面的评论者 greatwolf 建议了一个不同的implib命令implib -a -c mkl_rt.lib mkl_rt.dll,来保留方法名称的大小写。这导致的重复名称警告要少得多,但不会链接:[ILINK32 Error] Fatal: Exceeded memory limit for block Import symbols in module _vsrnggumbel
  • 我还尝试动态加载库和函数,以防 .lib 文件、方法原型等出现问题(例如,加载并直接DftiCreateDescriptor_s_md从 DLL 调用)。行为没有改变。
  • DLL的C 接口使用cdecl调用约定,这是项目选项设置为默认使用的内容,并单步执行方法的调用代码,我看到所有参数都被压入堆栈。每个函数似乎都被正确调用。
  • 将我的动态加载原型更改为stdcall(即使它应该找到cdecl版本)也会导致同样的问题 - 但值得检查。DLL mkl_rt.dll 主要只支持cdecl版本。
  • IDE 未设置为忽略任何异常。在 Tools > Options > Debugger Options > Embarcadero Debuggers > Native OS Exceptions 部分中,所有异常都设置为由调试器处理。

复制

这是一个简单的命令行 C 程序,足以演示崩溃:

IDE 用来构建它的 BCB 命令行是:

c:\program files (x86)\embarcadero\rad studio\7.0\bin\bcc32.exe -D_DEBUG -D_RTLDLL;_NO_VCL -I"..." -y -Q -k -r- -c -tWC -C8 - oDebug\mkltest.obj -w-par -Od -v -vi- -H=Debug\MKLTest.pch -H mkltest.c

和链接:

c:\program files (x86)\embarcadero\rad studio\7.0\bin\ilink32.exe -LDebug;"...";"..." -lDebug -v -G8 c0x32 Debug\mkltest.obj , Debug\ MKLTest.exe , Debug\MKLTest.map , import32.lib cw32i.lib , ,

我省略了大量的包含路径。为了完整起见,整行是:

c:\program files (x86)\embarcadero\rad studio\7.0\bin\bcc32.exe -D_DEBUG -D_RTLDLL;_NO_VCL -I"C:\Program Files (x86)\EurekaLab\EurekaLog 6\Cbuilder14";C:\ projects\Misc\DirectX\Direct3D\Tutorials\Tut05_Textures;"C:\Program Files (x86)\Embarcadero\RAD Studio\7.0\include\boost_1_39\boost\tr1\tr1";"c:\program files (x86)\ embarcadero\rad studio\7.0\include";"c:\program files (x86)\embarcadero\rad studio\7.0\include\dinkumware";"c:\program files (x86)\embarcadero\rad studio\7.0\include \vcl";"C:\Program Files (x86)\Embarcadero\RAD Studio\7.0\include\boost_1_39";"c:\program files (x86)\embarcadero\rad studio\7.0\include";"c:\程序文件 (x86)\embarcadero\rad studio\7.0\include\vcl";"c:\program files (x86)\embarcadero\rad studio\7.0\ObjRepos\Cpp";"c:\program files (x86)\embarcadero\rad studio\7.0\include\Indy10";"c:\program files (x86)\embarcadero\rad studio\7.0\Virtual Treeview\Common ";"c:\program files (x86)\embarcadero\rad studio\7.0\Virtual Treeview\Source";"c:\program files (x86)\embarcadero\rad studio\7.0\Virtual Treeview\Delphi";"c :\program files (x86)\embarcadero\rad studio\7.0\include\boost_1_39";"c:\program files (x86)\embarcadero\rad studio\7.0\Toolbar2000\TB2K\Lib\D12";"c:\程序文件 (x86)\embarcadero\rad studio\7.0\Toolbar2000\SpTBXLib\Source";"c:\program files (x86)\embarcadero\rad studio\7.0\AutomatedQADocking\Source";"C:\Program Files (x86 )\TMS 高级多边形列表";"C:\Program Files (x86)\TMS 高级多边形列表\Builder2010";"C:\Program Files (x86)\EurekaLab\EurekaLog 6\CBuilder14";"c:\program files (x86)\embarcadero\rad studio\7.0\Abbrevia\source" -y -Q -k -r- -c -tWC -C8 -oDebug\mkltest.obj -w-par -Od -v -vi- -H=Debug\MKLTest.pch -H mkltest.c

和链接:

c:\program files (x86)\embarcadero\rad studio\7.0\bin\ilink32.exe -LDebug;"c:\program files (x86)\embarcadero\rad studio\7.0\lib\debug";"C:\ Program Files (x86)\EurekaLab\EurekaLog 6\Cbuilder14";C:\projects\Misc\DirectX\Direct3D\Tutorials\Tut05_Textures;"c:\program files (x86)\embarcadero\rad studio\7.0\lib";" c:\program files (x86)\embarcadero\rad studio\7.0\lib\obj";"c:\program files (x86)\embarcadero\rad studio\7.0\lib\psdk";"C:\Program Files ( x86)\EurekaLab\EurekaLog 6\CBuilder14";"c:\program files (x86)\embarcadero\rad studio\7.0\lib";"c:\program files (x86)\embarcadero\rad studio\7.0\lib\ psdk";"c:\program files (x86)\embarcadero\rad studio\7.0\lib\Indy10";"c:\program files (x86)\embarcadero\rad studio\7.0\Toolbar2000\TB2K\Lib\D12";"c:\program files (x86)\embarcadero\rad studio\7.0\AutomatedQADocking\Source";"C:\Program Files (x86)\TMS Advanced Poly List";" C:\Program Files (x86)\TMS Advanced Poly List\Builder2010";"C:\Program Files (x86)\EurekaLab\EurekaLog 6\CBuilder14";"C:\Users\Public\Documents\RAD Studio\7.0\ DCP" -jDebug;"c:\program files (x86)\embarcadero\rad studio\7.0\lib\debug";"C:\Program Files (x86)\EurekaLab\EurekaLog 6\Cbuilder14";C:\projects\ Misc\DirectX\Direct3D\Tutorials\Tut05_Textures;"c:\program files (x86)\embarcadero\rad studio\7.0\lib";"c:\program files (x86)\embarcadero\rad studio\7.0\lib\obj ";"c:\程序文件 (x86)\embarcadero\rad studio\7.0\lib\psdk";"C:\Program Files (x86)\EurekaLab\EurekaLog 6\CBuilder14";"c:\program files (x86)\embarcadero\rad studio\7.0\lib";"c:\program files (x86)\embarcadero\rad studio\ 7.0\lib\psdk";"c:\program files (x86)\embarcadero\rad studio\7.0\lib\Indy10";"c:\program files (x86)\embarcadero\rad studio\7.0\Toolbar2000\TB2K\ Lib\D12";"c:\program files (x86)\embarcadero\rad studio\7.0\AutomatedQADocking\Source";"C:\Program Files (x86)\TMS Advanced Poly List";"C:\Program Files ( x86)\TMS Advanced Poly List\Builder2010";"C:\Program Files (x86)\EurekaLab\EurekaLog 6\CBuilder14";"C:\Users\Public\Documents\RAD Studio\7.0\DCP" -lDebug -v -G8 c0x32 Debug\mkltest.obj , Debug\MKLTest.exe , Debug\MKLTest.map , import32.lib cw32i.lib , ,\program files (x86)\embarcadero\rad studio\7.0\lib";"c:\program files (x86)\embarcadero\rad studio\7.0\lib\psdk";"c:\program files (x86)\embarcadero \rad studio\7.0\lib\Indy10";"c:\program files (x86)\embarcadero\rad studio\7.0\Toolbar2000\TB2K\Lib\D12";"c:\program files (x86)\embarcadero\rad studio\7.0\AutomatedQADocking\Source";"C:\Program Files (x86)\TMS Advanced Poly List";"C:\Program Files (x86)\TMS Advanced Poly List\Builder2010";"C:\Program Files ( x86)\EurekaLab\EurekaLog 6\CBuilder14";"C:\Users\Public\Documents\RAD Studio\7.0\DCP" -lDebug -v -G8 c0x32 Debug\mkltest.obj , Debug\MKLTest.exe , Debug\MKLTest .map , import32.lib cw32i.lib , ,\program files (x86)\embarcadero\rad studio\7.0\lib";"c:\program files (x86)\embarcadero\rad studio\7.0\lib\psdk";"c:\program files (x86)\embarcadero \rad studio\7.0\lib\Indy10";"c:\program files (x86)\embarcadero\rad studio\7.0\Toolbar2000\TB2K\Lib\D12";"c:\program files (x86)\embarcadero\rad studio\7.0\AutomatedQADocking\Source";"C:\Program Files (x86)\TMS Advanced Poly List";"C:\Program Files (x86)\TMS Advanced Poly List\Builder2010";"C:\Program Files ( x86)\EurekaLab\EurekaLog 6\CBuilder14";"C:\Users\Public\Documents\RAD Studio\7.0\DCP" -lDebug -v -G8 c0x32 Debug\mkltest.obj , Debug\MKLTest.exe , Debug\MKLTest .map , import32.lib cw32i.lib , ,\program files (x86)\embarcadero\rad studio\7.0\lib\psdk";"c:\program files (x86)\embarcadero\rad studio\7.0\lib\Indy10";"c:\program files (x86) \embarcadero\rad studio\7.0\Toolbar2000\TB2K\Lib\D12";"c:\program files (x86)\embarcadero\rad studio\7.0\AutomatedQADocking\Source";"C:\Program Files (x86)\TMS高级多边形列表";"C:\Program Files (x86)\TMS 高级多边形列表\Builder2010";"C:\Program Files (x86)\EurekaLab\EurekaLog 6\CBuilder14";"C:\Users\Public\Documents \RAD Studio\7.0\DCP" -lDebug -v -G8 c0x32 Debug\mkltest.obj , Debug\MKLTest.exe , Debug\MKLTest.map , import32.lib cw32i.lib , ,\program files (x86)\embarcadero\rad studio\7.0\lib\psdk";"c:\program files (x86)\embarcadero\rad studio\7.0\lib\Indy10";"c:\program files (x86) \embarcadero\rad studio\7.0\Toolbar2000\TB2K\Lib\D12";"c:\program files (x86)\embarcadero\rad studio\7.0\AutomatedQADocking\Source";"C:\Program Files (x86)\TMS高级多边形列表";"C:\Program Files (x86)\TMS 高级多边形列表\Builder2010";"C:\Program Files (x86)\EurekaLab\EurekaLog 6\CBuilder14";"C:\Users\Public\Documents \RAD Studio\7.0\DCP" -lDebug -v -G8 c0x32 Debug\mkltest.obj , Debug\MKLTest.exe , Debug\MKLTest.map , import32.lib cw32i.lib , ,0\Toolbar2000\TB2K\Lib\D12";"c:\program files (x86)\embarcadero\rad studio\7.0\AutomatedQADocking\Source";"C:\Program Files (x86)\TMS Advanced Poly List";" C:\Program Files (x86)\TMS Advanced Poly List\Builder2010";"C:\Program Files (x86)\EurekaLab\EurekaLog 6\CBuilder14";"C:\Users\Public\Documents\RAD Studio\7.0\ DCP" -lDebug -v -G8 c0x32 Debug\mkltest.obj , Debug\MKLTest.exe , Debug\MKLTest.map , import32.lib cw32i.lib , ,0\Toolbar2000\TB2K\Lib\D12";"c:\program files (x86)\embarcadero\rad studio\7.0\AutomatedQADocking\Source";"C:\Program Files (x86)\TMS Advanced Poly List";" C:\Program Files (x86)\TMS Advanced Poly List\Builder2010";"C:\Program Files (x86)\EurekaLab\EurekaLog 6\CBuilder14";"C:\Users\Public\Documents\RAD Studio\7.0\ DCP" -lDebug -v -G8 c0x32 Debug\mkltest.obj , Debug\MKLTest.exe , Debug\MKLTest.map , import32.lib cw32i.lib , ,-lDebug -v -G8 c0x32 Debug\mkltest.obj , Debug\MKLTest.exe , Debug\MKLTest.map , import32.lib cw32i.lib , ,-lDebug -v -G8 c0x32 Debug\mkltest.obj , Debug\MKLTest.exe , Debug\MKLTest.map , import32.lib cw32i.lib , ,

最后说明:我刚刚添加了 [delphi] 标签,因为它使用相同的 RTL,以防万一。我正在使用 RAD Studio 2010,它包括 C++ Builder 和 Delphi。我将 MKL 放入的主要应用程序是用两种语言编写的。上面的测试应用程序是纯 C 的。

0 投票
2 回答
706 浏览

c - Intel Phi 上的 MKL 性能

我有一个例程对小矩阵(50-100 x 1000 元素)执行一些 MKL 调用以拟合模型,然后我调用不同的模型。在伪代码中:

调用上面的版本1。由于模型是独立的,所以我可以使用OpenMP线程来并行化模型拟合,如下(版本2):

当我在主机上运行版本 1 时,大约需要 11 秒,并且 VTune 报告并行化较差,大部分时间都处于空闲状态。主机上的版本 2 大约需要 5 秒,并且 VTune 报告了出色的并行化(几乎 100% 的时间花费在使用 8 个 CPU 上)。现在,当我编译代码以在本机模式下(使用 -mmic)在 Phi 卡上运行时,在 mic0 上的命令提示符下运行时,版本 1 和 2 都需要大约 30 秒。当我使用 VTune 对其进行分析时:

  • 版本 1 大约需要 30 秒,热点分析表明大部分时间都花在了 __kmp_wait_sleep 和 __kmp_static_yield 上。在 7710 秒 CPU 时间中,有 5804 秒用于自旋时间。
  • 版本 2 需要 fooooorrrreevvvver... 在 VTune 中运行几分钟后,我将其杀死。热点分析表明,25254s的CPU时间中,有21585s花费在[vmlinux]上。

谁能解释这里发生了什么以及为什么我的表现如此糟糕?我使用 OMP_NUM_THREADS 的默认值并设置 KMP_AFFINITY=compact,granularity=fine(如英特尔推荐的那样)。我是 MKL 和 OpenMP 的新手,所以我确定我犯了新手错误。

谢谢,安德鲁

0 投票
1 回答
544 浏览

python-3.x - 构建后无法导入 numpy

我在 Linux ( ) 上使用 Intel C++ 和 Intel MKL 为 Python 3(64 位)构建 numpy 3.11-1-amd64。我从 git 得到了源代码。我还为 Linux 安装了 Intel C++ Composer XE 2013。

这是我所做的:

  1. 在源文件夹中创建了一个site.cfg内容

    /li>
  2. self.cc_exe将in更改numpy/distutils/intelccompiler.py'icc -O3 -g -fPIC -fp-model strict -fomit-frame-pointer -openmp -xhost'

  3. 添加了库路径:export LD_LIBRARY_PATH=/opt/intel/mkl/lib/intel64:/opt/intel/lib/intel64:$LD_LIBRARY_PATH

  4. 执行sudo python3 setup.py config --compiler=intel build_clib --compiler=intel build_ext --compiler=intel install

一切都完成后,我启动了python3and import numpy,这给出了

但我检查过/opt/intel/lib/intel64,文件就在那里。我错过了什么吗?谢谢你。

0 投票
1 回答
69 浏览

c++ - 中断正在执行 MKL 或其他第三方函数的线程

¿ 如何中断正在执行 MKL 子程序的线程?在其他 3rd 方库中?我的线程是用 boost::thread 创建的,通常我使用中断来停止我的线程(http://www.boost.org/doc/libs/1_41_0/doc/html/thread/thread_management.html#thread.thread_management.中断),但我怎样才能停止执行 MKL 代码的线程呢?有任何想法吗?

提前致谢

0 投票
1 回答
115 浏览

inline - 是否可以从 intel mkl 库中内联子程序?

我的代码多次调用英特尔 MKL dgemv。是否可以内联 MKL dgemv?