Спонсор: Intel
Опубликован: 11.10.2012 | Доступ: свободный | Студентов: 276 / 52 | Длительность: 07:36:00
Лекция 2:

Библиотеки Intel. Intel® Math Kernel Library

< Лекция 1 || Лекция 2: 123456 || Лекция 3 >

DFL – Data Fitting Library

Векторизованные функции, предназначенные для фитирования данных.

Структура

Сплайны Тип сплайна Граничные условия Внутренние условия
Линейные 1-я производная
Квадратичные Свободные 2-я производная
Кубические Натуральные, эрмитовы, Бесселя, Акимы 1-я производная на левой/правой границах интервала Массив узлов
Кусочно-постоянные Непрерывные слева, непрерывные справа Периодические
Определенные пользователем

Производительность

Примеры

Вычисление скалярного произведения

#include <windows.h>
#include <stdio.h>
#include "mkl.h"

#include "gettimeofday.h"
#define N 100000000

double a[N + 1], b[N + 1];   
int i;   
double gDotProduct = 0;

int main()
{
// initialize vectors   
for (i = 0; i < N; i++) 
{      
  a[i] = 1.034; b[i] = 1.057;
}
printf("Computed value of vector sum: ");
 gDotProduct = cblas_ddot(N, &a, 1, &b, 1);
//print dot product  
printf("sum = %f\n", gDotProduct);   
}

Вычисление собственных значений

program eigenLAPACK
integer, parameter ::  NIN = 5, NOUT = 6
integer :: I, IFAIL, INFO, J, N
character(1) ::  UPLO='U'
real, allocatable, dimension(:,:) :: A
real, allocatable, dimension(:)   :: D
real, allocatable, dimension(:)   :: E, TAU
real, allocatable, dimension(:)   ::  WORK
real, allocatable, dimension(:,:) :: Z
external  f06qfe, sorgtr, ssteqr, ssytrd, x04cae

write(NOUT, *) 'N=?'
read(NIN,*) N

allocate(D(N))
LWORK = 64 * N
allocate(WORK(LWORK))
allocate(E(N-1))
allocate(TAU(N-1))
LDA = N
allocate(A(LDA, N))
LDZ = N
allocate(Z(LDZ, N))
allocate(TAU(N-1))
LDA = N
allocate(A(LDA, N))
LDZ = N
allocate(Z(LDZ, N))

!
!       Initialization of upper triangular part of A
!

 do i=1, N
  do j=i, N
   a(i, j)=3.8*i-2.*j
  enddo
enddo

!
! Reduce A to tridiagonal form
!

call ssytrd(UPLO, N, A, LDA, D, E, TAU, WORK, LWORK, INFO)
!
!        Copy A into Z
!

call f06qfe(UPLO, N, N, A, LDA, Z, LDZ)

!
!  Form Q explicitly, storing the result in Z
!

call sorgtr(UPLO, N, Z, LDZ, TAU, WORK, LWORK, INFO)

!
! Calculate all the eigenvalues and eigenvectors of A
!

call ssteqr('V', N, D, E, Z, LDZ, WORK, INFO)

write(NOUT,*)
if(INFO >0) then
 write(NOUT,*) 'Failure to converge.'
else
!
! Uncomment to print eigenvalues and eigenvectors
!

!write(NOUT,*) 'Eigenvalues'
!write(NOUT, "(3X,(8F12.4))") (D(I),I=1,N)
!IFAIL = 0
!
!call x04cae('General', ' ', N, N, Z, LDZ, 'Eigenvectors', IFAIL)

end if

deallocate(D)
deallocate(WORK)
deallocate(E)
deallocate(TAU)
deallocate(A)
deallocate(Z)

end
< Лекция 1 || Лекция 2: 123456 || Лекция 3 >