gpt4 book ai didi

c - MKL BLAS 函数的行为不符合预期

转载 作者:行者123 更新时间:2023-11-30 15:08:46 28 4
gpt4 key购买 nike

我无法让英特尔 MKL 在 C 中正常工作。我有以下测试程序:

#include "stdafx.h"
#include"mkl.h"
int main()
{
int one = 1;
int ten = 10;
double copy[10];
double threes[10];

for (int i = 0; i < 10; ++i) threes[i] = 3;

dcopy(&ten, threes, &one, copy, &one);
double l1norm;
l1norm = dasum(&ten, threes, &one);
return 0;
}

它构建和链接得很好,但没有达到我的预期。具体来说,在返回行,数组“copy”继续充满声明时的内容,并且 l1norm 等于 0。我正在链接到以下库:mkl_blas95_ilp64.lib、mkl_core_dll.lib、mkl_intel_ilp64_dll.lib 和 mkl_intel_thread_dll.lib。

在运行调用 MKL 的第三方代码时,我也遇到了类似的问题,因此我认为问题在于我如何配置构建(在 Visual Studio 2015 中)。

等效的 Fortran 程序运行良好。

最佳答案

请检查从 Fortran 移植到 C/C++ 时链接的库。 MKL 需要不同的库和具有不同编译器和设置的编译标志。 C 编译器至少不需要 mkl_blas95_ilp64.lib

与默认模型 LP64 相比,ILP64 并不常见。

MKL Link Line Advisor 是 Intel 提供的一个工具来解决这个问题。您可以使用它来检查您的库和编译标志是否正确。

https://software.intel.com/en-us/articles/intel-mkl-link-line-advisor

关于c - MKL BLAS 函数的行为不符合预期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37167719/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com