Главная » Просмотр файлов » 1626435587-55f52a4de97976f3c6215fa7c103f544

1626435587-55f52a4de97976f3c6215fa7c103f544 (844241), страница 12

Файл №844241 1626435587-55f52a4de97976f3c6215fa7c103f544 (Смирнов 2017 - Основы вычислительной физики ч2) 12 страница1626435587-55f52a4de97976f3c6215fa7c103f544 (844241) страница 122021-07-16СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 12)

Ярлык для запуска командной строки находится в папке Visual StudioTools в меню программ. Также можно перейти в каталог с установленной Microsoft Visual Studio на жёстком диске и запустить файлCommon7\Tools\VsDevCmd.bat. Более подробную информацию о способе запуска консоли в различных версиях операционной системыMicrosoft Windows можно найти в статье «Командная строка разработчика для Visual Studio» на сайте msdn.microsoft.com.Для включения библиотеки в проект Microsoft Visual Studio необходимо в свойствах проекта выбрать в левом верхнем углу диалоговогоокна Configuration: All Configurations, после чего на вкладке Linker BInput вписать нужный lib-файл в поле Additional Dependencies. Путь кlib-файлу можно указать в поле Additional Library Directories на вкладке Linker B General. Путь к h-файлу следует указать в поле AdditionalInclude Directories на вкладке C/C++ B General.Если для сборки программ с FFTW под Windows используется компилятор MinGW, то dll-файл будет подключён компоновщиком непосредственно (без использования дополнительных lib-файлов).

При этомпуть к h-файлу указывается на стадии компиляции с использованиемопции -I.Пользователям операционных систем семейства Unix необходимоскачать исходные коды библиотеки FFTW, после чего выполнить установку, состоящую из трёх шагов:20 Также возможно разместить dll-файлы в произвольном месте, добавив путь книмв переменную PATH.21 Предполагается, что dll-файлы лежат в текущем рабочем каталоге, в которомоткрыта консоль разработчика; если это не так, предварительно нужно либо сменить текущий рабочий каталог с помощью команды cd, либо скопировать dll-файлыв каталог по умолчанию.59./configuremakemake installВ качестве опций скрипта configure можно указать используемыйкомпилятор (например, CC=gcc), необходимость установки библиотеки для типа float, long double либо нестандартного __float128(--enable-float, --enable-long-double и --enable-quad-precision22соответственно), возможность использования SIMD-инструкций процессора (--enable-sse2, --enable-avx, --enable-avx2 и т.

п.). В случае отсутствия прав администратора в системе необходимо использовать опцию --prefix=; в противном случае следует выполнять установку с использованием sudo. Для подключениябиблиотеки на стадии компоновки программы в gcc/g++ используетсяопция -lfftw3, для указания пути к библиотеке — опция -L.Более подробную информацию об опциях скрипта configure приустановке в Unix-системах, а также о способах сборки библиотеки изисходных кодов под Windows можно найти на официальном сайте библиотеки [A9] в разделе «Installation and Customization».путь_для_установкипуть2.11.2.

ИспользованиеОбщая структура программы c использованием библиотеки FFTWсостоит из следующих основных частей: подключение fftw3.h наряду сдругими заголовочными файлами, инициализация (выделение памяти,создание плана преобразований), основная часть (выполнение расчётов с использованием быстрого преобразования Фурье) и финализация(освобождение памяти):#include <fftw3.h>#include <complex>typedef std::complex<double> Cplx;...{//размер таблиц с данными (число узлов сетки):const int n = 1 << 10;//2**10 == 1024//инициализация://выделяем память под исходные данные и Фурье-образа:Cplx *in = (Cplx*) fftw_malloc(sizeof(Cplx) * n);22 Доступно при использовании компилятора gcc начиная с версии 4.6, приэтом на стадии компоновки программы нужно подключать библиотеки -lfftw3q-lquadmath -lm.60}Cplx *out = (Cplx*) fftw_malloc(sizeof(Cplx) * n);//создаем план для выполнения одномерного DFT:fftw_plan p = fftw_plan_dft_1d(n, (fftw_complex*)in,(fftw_complex*)out, FFTW_FORWARD, FFTW_ESTIMATE);...//основная часть программы: выполняем DFTfftw_execute(p); //необходимое число раз...//финализация: освобождаем память:fftw_destroy_plan(p);fftw_free(in);fftw_free(out);Хотя библиотека FFTW определяет собственный тип для записи комплексных чисел (typedef double fftw_complex[2]), рекомендуется использовать стандартные типы данных: complex в программах на языке C (стандарт C99, #include <complex.h>) либо шаблонstd::complex<T> в C++ (#include <complex>), см.

пример выше. Длястандартных типов комплексных чисел определены арифметическиеоперации и основные математические функции, что существенно упрощает разработку и чтение программного кода. Поскольку стандартные типы обладают битовой совместимостью с fftw_complex, для вызова функций библиотеки FFTW достаточно выполнять приведениетипа указателей, как это сделано в примере выше при вызове функцииfftw_plan_dft_1d.Для выделения памяти разработчики FFTW рекомендуют использовать функцию fftw_malloc (и комплементарную к ней fftw_freeдля освобождения памяти) вместо стандартных средств C и C++, таких как malloc / free, new[] / delete[], std::vector<T> и статических массивов фиксированного размера.

Хотя использование «обычных» средств выделения памяти также возможно, вызов fftw_mallocявляется предпочтительным, обеспечивая выравнивание выделяемыхфрагментов в памяти, что необходимо для использования SIMDинструкций23 процессора и заметного повышения скорости работыFFTW. Напомним, что выделение памяти занимает достаточно много машинного времени, поэтому рекомендуется выделять память в на23— набор специальных команд (инструкций),поддерживаемых рядом современных процессоров, позволяющих выполнить однуоперацию сразу над несколькими числами.

Для включения поддержки различныхнаборов SIMD-инструкций при установке FFTW необходимо указывать соответствующие опции, см. п. 2.11.1.Single Instruction, Multiple Data61чале работы программы, затем многократно использовать её в циклечисленного моделирования и освобождать только перед выходом изпрограммы.Помимо выделения памяти программный код инициализации также создаётпреобразования Фурье (см. вызов fftw_plan_dft_1dв приведённом выше примере).

Определяемый библиотекой FFTW типfftw_plan представляет собой указатель на структуру данных, содержащую всю необходимую информацию для выполнения дискретногопреобразования Фурье, включая указатели на исходную таблицу данных и массив-получатель (указатели in и out в примере выше). Поскольку вся необходимая информация сохранена в плане, для выполнения дискретного преобразования Фурье в программе достаточно вызвать функцию fftw_execute, передав ей единственный параметр —план преобразования.Однако необходимость создания плана преобразования Фурье продиктована в первую очередь стремлением не к лаконичности кода, нок высокой скорости его выполнения. Построение плана призвано определить наиболее эффективный алгоритм дискретного преобразованияФурье при использовании заданных параметров (таких как тип преобразования, размерность пространства, число узлов сетки) и конкретного аппаратного обеспечения, на котором выполняется программа.Библиотека FFTW включает в себя широкий набор функций для создания планов одно- и многомерных дискретных преобразований Фурье над комплексным и вещественным набором значений.

Для целейнашего курса будет достаточно ограничиться рассмотрением лишь одной функции из данного набора:планfftw_plan fftw_plan_dft_1d(int n,fftw_complex *in, fftw_complex *out,int sign, unsigned flags);Обратим внимание на стиль именования функций FFTW. Названиефункции начинается с префикса fftw_, указывающего на её принадлежность к библиотеке и тип данных. Так, при использовании типаданных одинарной точности float префикс должен быть заменён наfftwf_, для long double — на fftwl_, тогда как нестандартный типчетверной точности __float128 соответствует префиксу fftwq_.

Последующая часть имени состоит из отдельных слов и сокращений, раскрывающих решаемую задачу. В данном случае это plan_dft_1d — создание плана DFT (дискретного преобразования Фурье) в одномерномслучае.62Первый параметр (int n) функции fftw_plan_dft_1d определяетразмер входного и выходного массивов *in и *out комплексных значений, второй и третий параметры — указатели на первые элементы этихмассивов. Очевидно, что на этапе создания плана память под массивы должна быть уже выделена, при этом какая-либо инициализация(очистка памяти и заполнение массивов) не требуется.

Следует такжеподчеркнуть, что размер массива n может быть любым целым числом24 . Если решаемая задача не накладывает ограничений на количество узлов сетки, налучшим выбором с точки зрения повышения быстродействия выполнения преобразования Фурье будет степень двойки, = 2 . Хорошие результаты также получаются для = 2 3 5 7 11 13при + = 0 или 1 и произвольных значениях показателей , . .

. , , однако даже в самом худшем случае — при использовании простых —реализованные в FFTW алгоритмы требуют ( log ) арифметических операций.Четвёртый параметр (int sign) определяет знак в показателе экспоненты (см. определение (56) на с. 33). Для повышения читаемостикода, написанного с использованием FFTW, в файле fftw3.h определены константы FFTW_FORWARD и FFTW_BACKWARD, равные соответственно−1 и +1.Последний, пятый параметр unsigned flags представляет собойнабор флагов (переключателей), определяющих выбор алгоритма, который будет использоваться для выполнения преобразования Фурьепри последующих вызовах fftw_execute. К числу таких переключателей относится выбор между необходимостью сохранения значенийво входном массиве (FFTW_PRESERVE_INPUT25 и возможностью перезаписи входных значений для использования более эффективных алгоритмов (FFTW_DESTROY_INPUT).

Другой переключатель определяетуровень оптимизации при выборе алгоритма DFT, для чего используются следующие константы: FFTW_ESTIMATE — быстрый выбор субоптимального алгоритма для выполнения дискретного преобразованияФурье; FFTW_MEASURE26 , FFTW_PATIENT и FFTW_EXHAUSTIVE — выбор оптимального алгоритма путём непосредственного измерения и сравнения времени, затраченного на выполнение преобразования Фурье различными способами. Как можно догадаться из названий, каждая следующая константа в этом ряду соответствует поиску минимума времени выполнения в более широком классе алгоритмов, что требует24 Разумеется, с учётом ограничений на объём доступной памяти и необходимуюскоростьвыполнения преобразования Фурье.25 Используется по умолчанию для комплекснозначных преобразований.26 Используется по умолчанию.63бо́льших затрат времени на этапе создания плана, но позволяет сократить общее время выполнения программы при использовании оченьбольшого числа преобразований Фурье (типичный случай в численном моделировании физических задач).

Характеристики

Тип файла
PDF-файл
Размер
1,62 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6392
Авторов
на СтудИзбе
307
Средний доход
с одного платного файла
Обучение Подробнее