О OpenCL для OS X
OpenCL™ (Открытый Вычислительный Язык) является открытым стандартом для межплатформенного, программирования современных высоко параллельных архитектур процессора. Начатый с OS X v10.6, OpenCL состоит из основанного на C99 языка программирования, разработанного для параллелизма, мощное планирование API, и гибкое время выполнения, выполняющее ядра на CPU или GPU. OpenCL позволяет Вашему приложению использовать вычислительную мощность этих процессоров для улучшения, производительность и поставлять новые функции на основе вычисляют - интенсивные алгоритмы.
Кроме того, для поддержки для стандарта OpenCL 1.1 OS X v10.7 добавляет интеграцию между OpenCL, Grand Central Dispatch (GCD) и XCode для создания еще проще использовать OpenCL в приложении.
Сразу
Используя OpenCL проще чем когда-либо с OS X v10.7:
-
OpenCL полностью поддерживается XCode. XCode оффлайновый компилятор удаляет шаг конфигурации, раньше выполнявшийся перед ядром, мог быть выполнен и упрощает отладку ранее в процессе разработки. Посмотрите Привет Мир!.
Можно записать функции OpenCL в отдельных файлах и включать их в проект XCode. Можно скомпилировать ядра, когда приложение создается, прежде чем оно будет работать. Это улучшает производительность во время выполнения.
-
OpenCL теперь интегрируется с GCD, упрощающим для Вас фокусироваться на создании Ваших более эффективных ядер OpenCL. Посмотрите Используя Центральную Отгрузку С OpenCL.
-
Автовекторизатор компилирует и ускоряет производительность ядер, работающих на CPU до четырех раз без дополнительного усилия. Автовекторизатор позволяет Вам писать одно ядро, работающее эффективно и на CPU и на GPU. Можно вызвать автовекторизатор независимо от того, компилируете ли Вы от XCode или создаете ядра во время выполнения. Или можно отключить автовекторизатор при необходимости. Посмотрите Автовекторизатор.
Можно, конечно, продолжать использовать код, который Вы уже записали в стандарт OpenCL 1.1. Но посмотрите Совместимость на уровне двоичных кодов Ядер OpenCL для примечания о том, как обработать существующие двоичные файлы.
Поскольку OpenCL C основывается на C99, Вы свободны обработать свои данные в функциях OpenCL C, как Вы были бы в C с немногими ограничениями. Кроме поддержки рекурсии и указателей функции, нет многих функций языка, что C имеет тот OpenCL C, не имеет. Фактически, OpenCL C обеспечивает несколько выгодных функций, которые язык программирования C не предлагает исходно, такие как оптимизированные функции доступа к образу. OpenCL C имеет встроенную поддержку вектора intrinsics и предлагает векторные типы данных. Операторы в OpenCL C перегружаются, и арифметика выполнения между векторными типами данных синтаксически эквивалентна выполнению арифметики между скалярными значениями. Обратитесь к Спецификация OpenCL для большего количества подробных данных о встроенных функциях и средствах языка C OpenCL.
Предпосылки
Это руководство предполагает, что Вы программируете в C и имеете доступ к Спецификации OpenCL. Несмотря на то, что это руководство обсуждает много API-функций ключа OpenCL, оно не предоставляет подробную информацию о OpenCL API или языке программирования OpenCL C.
См. также
Спецификация OpenCL, доступная от Khronos Group в http://www .khronos.org/registry/cl/, предоставляет информацию о стандарте OpenCL.
Руководство по программированию OpenCL Aaftab Munshi, Бенедиктом Гэстером, Тимоти G. Мэттсон, Джеймс Фун, и Дан Гинсбург, доступный от Pearson Education, Inc., является полезным введением в язык OpenCL и стандарт; эти темы не обсуждены в этой книге.
Для получения дополнительной информации о Центральных очередях Отгрузки, см. Руководство по программированию Параллелизма: Очереди Отгрузки.