Создание решения для типовых задач, которые значительно ускоряют вычисления при анализе астрономических данных

Практическая реализация основных алгоритмов обработки. Особенности работы с графическими ускорителями, реализация алгоритмов агрегирующей статистики данных. Разработка архитектуры проекта, реализация алгоритмов Фурье. Специфика алгоритма Bitonic.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 07.09.2018
Размер файла 1,3 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

H_sum = new float[sumBufLen];

H_met = new float[metBufLen];

}

// call this before CalculateFFT()

void setup_clFFT()

{

/* FFT library realted declarations */

clfftDim dim = CLFFT_1D;

size_t clLengths[1] = { windowSize };

/* Setup clFFT. */

clfftSetupData fftSetup;

err = clfftInitSetupData(&fftSetup);

err = clfftSetup(&fftSetup);

/* Create a default plan for a complex FFT. */

err = clfftCreateDefaultPlan(&planHandle, ctx, dim, clLengths);

/* Set plan parameters. */

err = clfftSetPlanPrecision(planHandle, CLFFT_SINGLE);

err = clfftSetLayout(planHandle, CLFFT_REAL, CLFFT_HERMITIAN_INTERLEAVED);

err = clfftSetResultLocation(planHandle, CLFFT_OUTOFPLACE);

err = clfftSetPlanBatchSize(planHandle, fftTotalCount);

err = clfftSetPlanDistance(planHandle, shiftSize, halfedWindowSize);

/* Bake the plan. */

err = clfftBakePlan(planHandle, 1, &queue, NULL, NULL);

}

void calculateFFT()

{

err = clEnqueueWriteBuffer(queue, D_raw, CL_TRUE, 0, rawBufLen * sizeof(POINT_TYPE), H_raw, 0, NULL, NULL);

/* Execute the plan. */

err = clfftEnqueueTransform(planHandle, CLFFT_FORWARD, 1, &queue, 0, NULL, NULL, &D_raw, &D_fft, NULL);

/* Wait for calculations to be finished. */

err = clFinish(queue);

// NO NEED

/* Fetch results of calculations. */

//err = clEnqueueReadBuffer(queue, D_fft, CL_TRUE, 0, bandCount * fftsPerBand * halfedWindowSize * 2 * sizeof(POINT_TYPE), H_sum, 0, NULL, NULL);

}

// call this after you don't need calculateFFT() function anymore. Call before ocl and buffers finalization

void finalize_clFFT()

{

/* Release the plan. */

err = clfftDestroyPlan(&planHandle);

/* Release clFFT library. */

clfftTeardown();

}

// call this before sumVectors() and getMetrics()

void setup_Kernels()

{

kernelSource = getKernelSource();

// Number of work items in each local work group

localSize = 64;

// Number of total work items - localSize must be devisor

globalSize = ceil(resultBandwidth / (float)localSize)*localSize;

// Create the compute program from the source buffer

program = clCreateProgramWithSource(ctx, 1,

(const char **)& kernelSource, NULL, &err);

// Build the program executable

//err = clBuildProgram(program, 0, NULL, NULL, NULL, NULL);

if (clBuildProgram(program, 0, NULL, NULL, NULL, NULL) != CL_SUCCESS)

{

std::cout << "Program Build failed\n";

size_t length;

char buffer[4*2048];

err = clGetProgramBuildInfo(program, device, CL_PROGRAM_BUILD_LOG, sizeof(buffer), buffer, &length);

std::cout << "--- Build log ---\n " << buffer << std::endl;

exit(1);

}

// Create the compute kernel in the program we wish to run

aggregateKernel = clCreateKernel(program, "aggregateFFTs", &err);

// Set the arguments to our compute kernel

err = clSetKernelArg(aggregateKernel, 0, sizeof(cl_mem), &D_fft);

err |= clSetKernelArg(aggregateKernel, 1, sizeof(cl_mem), &D_sum);

err |= clSetKernelArg(aggregateKernel, 2, sizeof(int), &resultBandwidth);

err |= clSetKernelArg(aggregateKernel, 3, sizeof(int), &totalBandwidth2);

err |= clSetKernelArg(aggregateKernel, 4, sizeof(int), &totalWidth2);

err |= clSetKernelArg(aggregateKernel, 5, sizeof(int), &bandCount);

metricsLocalSize = METRICS_LEN / 2;

metricsGlobalSize = metSmallBatchCount * metBigBatchCount * metricsLocalSize;

// metrics kernel

metricsKernel = clCreateKernel(program, "getMetrics", &err);

// Set the arguments to our metrics kernel

err = clSetKernelArg( metricsKernel, 0, sizeof(cl_mem), &D_raw);

err |= clSetKernelArg(metricsKernel, 1, sizeof(cl_mem), &D_met);

err |= clSetKernelArg(metricsKernel, 2, metPairCount * 2 * sizeof(POINT_TYPE), NULL);

err |= clSetKernelArg(metricsKernel, 3, metPairCount * 2 * sizeof(POINT_TYPE), NULL);

err |= clSetKernelArg(metricsKernel, 4, METRICS_COUNT * sizeof(POINT_TYPE), NULL);

err |= clSetKernelArg(metricsKernel, 5, sizeof(unsigned int), &metPairCount);

err |= clSetKernelArg(metricsKernel, 6, sizeof(unsigned int), &metSmallBatchCount);

err |= clSetKernelArg(metricsKernel, 7, sizeof(unsigned int), &metSmallBatchShift);

err |= clSetKernelArg(metricsKernel, 8, sizeof(unsigned int), &metBigBatchCount);

err |= clSetKernelArg(metricsKernel, 9, sizeof(unsigned int), &metBigBatchShift);

free(kernelSource);

}

void sumVectors()

{

// Execute the kernel over the entire range of the data set

err = clEnqueueNDRangeKernel(queue, aggregateKernel, 1, NULL, &globalSize, &localSize,

0, NULL, NULL);

// Wait for the command queue to get serviced before reading back results

err = clFinish(queue);

// Read the results from the device

err = clEnqueueReadBuffer(queue, D_sum, CL_TRUE, 0, sumBufLen * sizeof(POINT_TYPE), H_sum, 0, NULL, NULL);

}

void getMetrics()

{

// Execute the kernel over the entire range of the data set

err = clEnqueueNDRangeKernel(queue, metricsKernel, 1, NULL, &metricsGlobalSize, &metricsLocalSize,

0, NULL, NULL);

// Wait for the command queue to get serviced before reading back results

err = clFinish(queue);

// Read the results from the device

err = clEnqueueReadBuffer(queue, D_met, CL_TRUE, 0, metBufLen * sizeof(POINT_TYPE), H_met, 0, NULL, NULL);

}

// call this after you don't need sumVectors() and getMetrics() functions anymore. Call before ocl and buffers finalization

void finalize_Kernels()

{

// release OpenCL resources

clReleaseKernel(aggregateKernel);

clReleaseKernel(metricsKernel);

clReleaseProgram(program);

}

}

Размещено на Allbest.ru

...

Подобные документы

  • Создание схем алгоритмов и составление программы на языке Pascal для вычисления значений заданных функций. Сущность и порядок нахождения значения определенного интеграла. Анализ работы подпрограмм. Разработка тестов для проверки правильности алгоритмов.

    контрольная работа [831,0 K], добавлен 24.11.2013

  • Разработка и анализ алгоритмов с использованием электронных таблиц и прикладных программ Smath Studio, Microsoft Excel. Проверка алгоритма ветвления или выбора. Реализация циклов на примере вычисления определённого интеграла с заданной точностью.

    контрольная работа [1,0 M], добавлен 19.03.2016

  • Общая характеристика и функциональные возможности системы "Компьютерное тестирование". Связи между информационными объектами. Проектирование алгоритмов обработки данных. Реализация алгоритмов обработки информации, разработка соответствующих макросов.

    контрольная работа [542,8 K], добавлен 19.10.2010

  • Переход от словесной неформальной постановки к математической формулировке данной задачи. Оценка различных вариантов с целью выбора наиболее эффективных структур данных и алгоритмов обработки. Реализация алгоритмов на одном из языков программирования.

    курсовая работа [35,0 K], добавлен 25.06.2013

  • Основные особенности эволюционных алгоритмов. Описание алгоритмов селекции, мутации, скрещивания, применяемых для реализации генетических алгоритмов. Вычисление функции приспособленности. Программная реализация. Тестирование и руководство пользователя.

    курсовая работа [1,3 M], добавлен 11.03.2014

  • История появления эволюционных алгоритмов. Нейрокомпьютерные исследования в России. Реализация генетических алгоритмов. Расчет эффективности процедур поиска конкурирующей процедуры. Schema и теорема шим. Примеры использования нейросетевых технологий.

    курсовая работа [43,0 K], добавлен 20.10.2008

  • Сущность построения, особенности применения и теоретическое обоснование алгоритмов приближенного решения математических задач. Основы численного метода, нахождение интерполяционного полинома методом Лагранжа. Руководство программиста и пользователя.

    курсовая работа [527,6 K], добавлен 16.08.2012

  • Целые числа в позиционных системах счисления. Недостатки двоичной системы. Разработка алгоритмов, структур данных. Программная реализация алгоритмов перевода в различные системы счисления на языке программирования С. Тестирование программного обеспечения.

    курсовая работа [593,3 K], добавлен 03.01.2015

  • Построение информационно-логической модели базы данных. Корректировка данных средствами запросов. Проектирование алгоритмов обработки данных. Реализация пользовательского интерфейса средствами форм. Разработка запросов для корректировки и выборки данных.

    курсовая работа [680,9 K], добавлен 19.10.2010

  • Разработка программы на языке Си++ и осуществление постановки и выбора алгоритмов решения задач обработки экономической информации, создание и редактирование базы данных, сортировка записей по определенному запросу, анализ эффективности обработки данных.

    контрольная работа [316,8 K], добавлен 28.08.2012

  • Описание особенностей программирования циклических алгоритмов на С/С++. Использование операторов цикла для организации повтора в программе определенных действий. Создание и реализация программы приближенного вычисления интеграла методом трапеций.

    лабораторная работа [86,3 K], добавлен 25.03.2019

  • Основные этапы создания алгоритмов, представление в виде программы. Рассмотрение методов решения задач. Метод поэтапных уточнений. Различие между численными и логическими алгоритмами. Реализация цикла со счетчиком. Процесс разработки сложного алгоритма.

    презентация [1,3 M], добавлен 22.10.2013

  • Разработка блок-схемы и программы обработки одномерного массива с доступом к элементам с помощью индексов и с помощью указателей. Словесное описание алгоритма и пользовательского интерфейса, листинг программы обработки матрицы и результат её выполнения.

    курсовая работа [391,1 K], добавлен 30.09.2013

  • Изучение применяемых в программировании и информатике структур данных, их спецификации и реализации, алгоритмов обработки данных и анализ этих алгоритмов. Программа определения среднего значения для увеличивающегося количества чисел заданного типа.

    контрольная работа [16,0 K], добавлен 19.03.2015

  • Обзор существующих подходов в генерации музыкальных произведений. Особенности создания стилизованных аудио произведений на основе современных нейросетевых алгоритмов. Выбор средств и библиотек разработки. Практические результаты работы алгоритма.

    дипломная работа [4,0 M], добавлен 13.10.2017

  • Исследование симметричных алгоритмов блочного шифрования. Минусы и плюсы алгоритма IDEA. Разработка программы аутентификации пользователя и сообщений на основе алгоритма IDEA. Выбор языка программирования. Тестирование и реализация программного средства.

    курсовая работа [314,2 K], добавлен 27.01.2015

  • Создание набора классов, реализующих функции генерации метаданых для заданного файла данных спутника MTSAT-1R. Существующие методы решения. Реализация алгоритма получения необходимых полей с нужными данными. Разработка структуры базы данных инвентаря.

    курсовая работа [38,6 K], добавлен 17.07.2009

  • Описание и особенности некоторых алгоритмов архивации. Построение кода Хаффмана. Динамический алгоритм построения кода Хаффмана. Обратное восстановление текста. Способы двухступенчатого кодирования информации. Практическая реализация алгоритма LZ77.

    курсовая работа [51,7 K], добавлен 24.12.2012

  • Критерии и основные стратегии планирования процессора. Разработка моделей алгоритмов SPT (Shortest-processing-task-first) и RR (Round-Robin). Сравнительный анализ выбранных алгоритмов при различных условиях и различном количестве обрабатываемых данных.

    курсовая работа [179,3 K], добавлен 21.06.2013

  • Решение задачи средствами прикладных программ. Разработка алгоритмов и структур данных. Реализация задачи определения статистических данных по успеваемости на факультете на языке программирования C#. Программа перевода чисел в различные системы счисления.

    курсовая работа [519,9 K], добавлен 03.01.2015

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.