[code:1]#include <mkl.h>[/code:1]
To će povući i mkl_lapacke.h.
Kompajl/link za C:
[code:1]icc -mkl=??? bla.c[/code:1]
ili za C++:
[code:1]icpc -mkl=??? bla.cpp[/code:1]
gdje je ???
sequential (ako se ne želi da MKL diže vlastite threadove), ili
parallel (ako se želi).
Ako je još u igri MPI, icc zamijeniti s mpiicc, odnosno icpc s mpiicpc, a MKL uzeti sekvencijalni.
Ako uzmete DGELS primjer [url=http://www.netlib.org/lapack/lapacke.html]odavde[/url], i samo promijenite zaglavlja da izgleda ovako:
[code:1]/* Calling DGELS using row-major order */
#include <mkl.h>
#include <stdio.h>
int main (int argc, const char * argv[])
{
double a[5][3] = {1,1,1,2,3,4,3,5,2,4,2,5,5,4,3};
double b[5][2] = {-10,-3,12,14,14,12,16,16,18,16};
lapack_int info,m,n,lda,ldb,nrhs;
int i,j;
m = 5;
n = 3;
nrhs = 2;
lda = 3;
ldb = 2;
info = LAPACKE_dgels(LAPACK_ROW_MAJOR,'N',m,n,nrhs,*a,lda,*b,ldb);
for(i=0;i<n;i++)
{
for(j=0;j<nrhs;j++)
{
printf("%lf ",b[i][j]);
}
printf("\n");
}
return(info);
}[/code:1]
to spremite na Fermiju kao proba.c i zatim kažete
[code:1]icc -mkl=sequential proba.c[/code:1]
te pokrenete ./a.out, dobijete
[code:1]2.000000 1.000000
1.000000 1.000000
1.000000 2.000000[/code:1]
Radi li sad?
To će povući i mkl_lapacke.h.
Kompajl/link za C:
ili za C++:
Kod: | icpc -mkl=??? bla.cpp |
gdje je ???
sequential (ako se ne želi da MKL diže vlastite threadove), ili
parallel (ako se želi).
Ako je još u igri MPI, icc zamijeniti s mpiicc, odnosno icpc s mpiicpc, a MKL uzeti sekvencijalni.
Ako uzmete DGELS primjer odavde, i samo promijenite zaglavlja da izgleda ovako:
Kod: | /* Calling DGELS using row-major order */
#include <mkl.h>
#include <stdio.h>
int main (int argc, const char * argv[])
{
double a[5][3] = {1,1,1,2,3,4,3,5,2,4,2,5,5,4,3};
double b[5][2] = {-10,-3,12,14,14,12,16,16,18,16};
lapack_int info,m,n,lda,ldb,nrhs;
int i,j;
m = 5;
n = 3;
nrhs = 2;
lda = 3;
ldb = 2;
info = LAPACKE_dgels(LAPACK_ROW_MAJOR,'N',m,n,nrhs,*a,lda,*b,ldb);
for(i=0;i<n;i++)
{
for(j=0;j<nrhs;j++)
{
printf("%lf ",b[i][j]);
}
printf("\n");
}
return(info);
} |
to spremite na Fermiju kao proba.c i zatim kažete
Kod: | icc -mkl=sequential proba.c |
te pokrenete ./a.out, dobijete
Kod: | 2.000000 1.000000
1.000000 1.000000
1.000000 2.000000 |
Radi li sad?
|