Я не могу заставить Intel 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).
Эквивалентная программа на Фортране работает нормально.
cblas_dcopy(10,threes,copy1)
, то эта строка выдастAccess violation reading location 0xFFFFFFFFFFFFFFFF
после того, как сумеет скопировать первые 3. Кроме того, код, который мне нужно вызвать (SuperLU), использует объявления Fortran с externcblas_dasum
на самом деле работает нормально - person MatthewJohnHeath   schedule 12.05.2016