Последовательный и параллельный варианты программы. Теоретическое и практическое ускорение параллельной программы, страница 3

                  jk+=2;jk-=6;if(jk>100)mk--;

            }*/

            start = clock()-start;

printf ("\n%f",start/CLK_TCK);

getch();

        return 0;

}

        Библиотека IMVL (Матрично - векторные операции)

        Автор      Куликов Игорь

        Дата       04.06.2007

        Файл       imvl.h

        Версия     1.2

        Основные данные:     

                        - размер матрицы (IMVL_dim)

                        - указатель выделенной памяти (IMVL_memory)

                        - указатель на первый свободный элемент памяти (IMVL_start_ptr)

                        - указатель для сброса матрицы (IMVL_next_start)

                        - значения элементов матрицы (IMVL_val)

                        - инвертированная главная диагональ (IMVL_di)

                        - индексы столбцов элементов (IMVL_col_ind)

                        - указатели на начало каждой строки (IMVL_row_ptr)

                        - вектор решения (IMVL_Solve)

                        - вектор правой части (IMVL_right)

        Вспомогательные данные:

                        - указатель на конец списка (IMVL_end_list)

                        - список (IMVL_list)

        Методы:  

                        - создание матрицы (IMVL_CreateMatrix)

                        - создание вектора (IMVL_CreateVector)

                        - уничтожение матрицы (IMVL_DestroyMatrix)

                        - сброс значений матрицы (IMVL_Reset)

                        - создание элемента матрицы (IMVL_CreateElement)

                        - построение портрета матрицы (IMVL_CreatePortrait)

                        - добавление значения в матрицу (IMVL_AddElement)

                        - добавление значения в вектор (IMVL_AddElementVector)

                        - умножение матрицы на вектор (IMVL_MultMatrixVector)

                        - умножение диагональной матрицы на вектор (IMVL_MultDiagMatrixVector)

                        - сложение векторов (IMVL_SummVectorMultConstant)

                        - копирование векторов (IMVL_CopyVector)

                        - скалярное произведение (IMVL_ScalarMultiply)

                        - установка начального приближения (IMVL_SetStartVector)

                        - решение СЛАУ методом сопряжённых градиентов (IMVL_ConjGradientMethod)

*/

/* Подключение необходимых заголовочных файлов */

#include <memory.h>

#include <math.h>

#include <omp.h>

/* Макроопределения типов и операций над ними */

#define byte            char                    // байт данных

#define integer         long int                // целый тип

#define real            double                  // вещественный тип

#define sizeint         sizeof(integer)         // размер целого

#define sizereal        sizeof(real)            // размер вещественного

/* Определения ошибок и сообщений */

#define IMVL_OK                 0       // всё в порядке

#define IMVL_OUT_OF_SPACE       1000    // недостаточно памяти

#define IMVL_ELEMENT_CREATED    1001    // элемент существует

#define IMVL_EMPTY_ERROR        1002    // непонятная ошибка

#define IMVL_ELEMENT_NOT_FOUND  1003    // элемент не найден

#define IMVL_NULL_DIAGONAL      1004    // ноль на диагонали

#define IMVL_RUN_TO_MAX_ITER    1005    // выход по итерации

#define IMVL_RUN_TO_EPSILON     1006    // выход по невязке

#define IMVL_FILE_NOT_OPEN      1007    // файл не удалось открыть

/* Определение константы точности*/

real    IMVL_EPS;

/* Определение данных */

integer         IMVL_dim;       // размер матрицы

byte*           IMVL_memory;    // память

byte*           IMVL_start_ptr; // начало свободной памяти

byte*           IMVL_next_start;// начало памяти для сброса

real*           IMVL_val;       // значения элементов