Сравнение параллелизма на основе нитей в CUDA и OpenCL

В порядок расчета состояния системы по данному уравнению входит такой параметр, как коэффициент парного взаимодействия (КПВ), характеризующий степень взаимодействия между отдельными парами веществ. Эти коэффициенты приняты постоянными, вне зависимости от температуры (например, КПВ пары веществ этан - пентан принят 0,01). В реальности это вносит погрешность в расчеты.

В проведенной работе, найдены наиболее близкие значения КПВ к реальным, путем расчета равновесных фазовых концентраций, и дальнейшего их сравнения с экспериментальными параметрами, взятыми по справочным данным, основанным на проведенных в 40-50хх годах двадцатого века экспериментах. В ходе данных испытаний, были экспериментально получены равновесные фазовые концентрации пар веществ, при различных давлениях и температурах.

После определения наиболее подходящих КПВ, были построены зависимости КПВ от температуры по шести парам веществ: этан - пентан, этан - гептан, этан - гексан, этан -пропан, этан - бутан, этан - изобутан

В результате, путем внесения поправки на переменный КПВ, удалось добиться снижения относительной ошибки расчета с 12,1 до 6,7 процента по системе этан - пентан; с 15,6 до 9,44 процентов по систему этан - гексан; с 8,1 до 5,3 процентов по системе этан - гептан; с 2,1 до 1,55 процента по системе этан - пропан; с 2,4 до 2,2 по системе этан - бутан; с 5,3 до 2,76 по системе этан - изобутан

Полученные зависимости КПВ от температуры охватывают практически весь спектр температур, встречающийся в нефтегазовой промышленности начиная от высоких температур в продуктивных пластах и высокотемпературных технологических установках до 100 оС и заканчивая различными низкотемпературными технологическими установками и трубопроводами до -30 оС.

Применение уточненного расчета позволяет более точно прогнозировать и анализировать состояние углеводородных систем в различных термобарических условиях. Расчет с переменным КПВ может применяться на всех стадии разработки и эксплуатации месторождений, начиная от гидродинамического и геологического моделирования пластов и закачивания транспортировкой углеводородов трубопроводным и иными видами транспорта [2].

Список литературы

1. Брусиловский А.И. Фазовые превращения при разработке месторождений нефти и газа. М.: Грааль, 2002.

2. Калиновский Ю.В., Пономарев А.И. Расчет фазового равновесия газоконденсатных смесей. М.: Уфа, 2008.

СРАВНЕНИЕ ПАРАЛЛЕЛИЗМА НА ОСНОВЕ НИТЕЙ В CUDA И OPENCL Бондарев А.В.1, Киселёв Ю.И.2

'Бондарев Александр Валерьевич — бакалавр;

2Киселёв Юрий Игоревич — бакалавр, кафедра математического и программного обеспечения информационных систем, Институт инженерных технологий и естественных наук Белгородский государственный национальный исследовательский университет, г. Белгород

CUDA - одна из самых зрелых и широко используемах структур в программировании GPGPU. OpenCL - молодая и перспективная технология параллельного программирования, которая нацелена на одновременные вычисления как на GPU так и на CPU. Программисты CUDA смогли легко заметить, что у OpenCL есть много общих черт с CUDA.

Рис. 1 показывает различия архитектуры нитей в CUDA и OpenCL. Левая часть на рис. 1 демонстрирует архитектуру CUDA, а правая часть OpenCL. В CUDA сетка относится к набору всех нитей, которые выполняют ту же самую ядерную функцию. Сетка организована как множество блоков того же самого размера. Блок назначен на текущий мультипроцессор, и далее разделен на единицы с 32 нитями, названные деформациями. Размер деформаций может измениться от одного внедрения до другого. Например, На графических картах серии Nvidia GTX, каждая деформация состоит из 32 нитей. В OpenCL NDRange - N-мерное пространство индекса, где N обозначает один, два или три измерения. Рабочая группа - крупномодульное

разложение пространства индекса, которое подобно сетке в CUDA. Взаимодействие с ядром выполнения называют пунктом работы. Это подобно нити в CUDA. Архитектура нити и CUDA и OpenCL одинакова за исключением того, что понятие деформации менее значима в OpenCL. Однако на самом деле деформация - все еще основная единица в создании, управлении, планировании и выполнении нитей мультипроцессорами в OpenCL. Отдельные нити, составляющие деформацию, начинают обращаться вместе в той же самой программе, но в других отношениях свободны ветвиться и выполнить независимо. Когда мультипроцессору дают один или несколько блоков нити, чтобы выполнить, он разделяет их на деформации, которые намечены единицей SIMT [1].

Рис. 1. Архитектура нитей в CUDA и OpenCL

CUDA OpenCL Readable/Writable

local memory shared memory global memory constant memory texture memory private memory local memory global memory constant memory image buffer R/ W R/ W R/ W Readable Readable

Рис. 2. Сравнение моделей памяти между CUDA и OpenCL в виде таблицы

Рис. 2 показывает различия моделей памяти между CUDA и OpenCL [2]. В CUDA локальная память частная у каждой нити. У каждого блока нити есть общая память, видимая всеми нитями в блоке и с таким же временем «жизни», как и сам блок. Все нити получают доступ к глобальной памяти. К постоянным пространствам памяти и пространствам памяти структуры могут также получить доступ все нити. У памяти структуры есть некоторые свойства, которые делают ее чрезвычайно полезной для вычисления. Например, структура память «прячется», оставляется про запас на чипе, таким образом, в некоторых ситуациях это обеспечивает более высокую эффективную пропускную способность, уменьшая запросы памяти к памяти вне чипа. Определенно, тайники структуры разработаны для графических приложений, где образцы доступа к памяти показывают много пространственной местности. У OpenCL есть почти та же самая модель памяти как CUDA, кроме памяти структуры. Однако у ImageBuffer в OpenCL есть подобные особенности с памятью структуры анологичны CUDA. Кроме того, CUDA использует статический компилятор, чтобы собрать ядро и host код прежде, чем начать программу на GPU. В то время как OpenCL использует ahead-of-time (AOT) или just-in-time (JIT) компилятор, который имеет хорошую мобильность, но будет всегда включать время компиляции в полное время выполнения.

Список литературы

1. Komatsu K., Sato K., Arai Y., Koyama K., Takizawa Н., Kobayashi Н. Evaluating performance and portability of OpenCL programs, in Proceedings of 9th. International Meeting of High Performance Computing for Computational Science // VecPar 2010. Berkeley. CA. USA. June, 2010.

2. NVidia, NVIDIA OpenCL Programming Guide for the CUDA Architecture version 2.3. NVidia Inc., 2009. 23 с.

3. Wanglong Yan1, Xiaohua Shi1, Xin Yan1 and Lina Wang1 Computing OpenSURF on OpenCL and General Purpose GPU // International Journal of Advanced Robotic Systems, 2013.