Россия, Липецк, Липецкий Государственный Технический Университет, 2014 |
Опубликован: 11.10.2012 | Уровень: специалист | Доступ: платный
Лекция 2:
Библиотеки Intel. Intel® Math Kernel Library
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