пятница, 26 октября 2012 г.

The Microsoft Accelerator 2

Ускоритель высокого уровня библиотек, который использует параллельные процессы: GPU и многоядерные CPU для ускорения работы. Accelerator v1 был выпущен MSR в октябре 2006 года и периодически обновляется с тех пор. Accelerator v2 - продукт компании MSR, цель которых: проверка архитектуры и высококачественный подход к API, чтобы, с инженерной точки зрения, собрать реальные данные об использовании GPU.

Accelerator v2 основывается на Accelerator v1. Во второй версии добавленны функции, по просьбе пользователей Accelerator v1, а точнее:
Accelrator v2 записывается в виде машинного кода; C++ библиотеки с управляемыми API-оболочками.Работа на многоядерных процессорах, 32 и 64 бит. Дополнение к Directx9 графических процессоров и CUDA. Возможность работы на нескольких устройствах в одном виде Accelerator. Асинхронная оценка, параллельные массивы и др.

На сегодняшний день пакет Accelerator v2 включает в себя ускоритель SDK, обширную документацию и несколько примеров приложений, для помощи в начале работы с Accelerator.

вторник, 23 октября 2012 г.

Conflux


Conflux is a self-contained library that is capable of transforming parallel algorithms written in C# and executing them on GPU and/or CPU.
As of now Conflux is a proof of concept that successfully executes simple parallel algorithms written directly in C# (without any shader code in plain strings, without any interop with CUDA driver, just high-level code).
Here's how Conflux works:
You encode a parallel algorithm using C#, debug it as usual and so on.

Now you write something like this (code is simplified a bit): Conflux.RunOnGPU<Algorithm>(args). After that, the algorithm is decompiled, analyzed, transformed to fit NVIDIA CUDA architecture and executed on GPU. Of course, not all syntactical constructs of C# are supported due to architectural restrictions of GPUs, though Conflux supports everything that can be efficiently mapped to CUDA 3.1.

If end-user doesn't have a GPU, you can provide a fallback option to execute the algorithm on a multi-core CPU. This looks like the following (again, code is a bit simplified): if (Cuda.GpuCount == 0) Conflux.RunOnCPU<Algorithm>(args). Nothing more is required - Conflux will transparently generate marshalling and computational code that's appropriate for this architecture. When you run algorithms on CPU, Conflux also has a possibility to generate debuggable code, so that you can set breakpoints within your computational kernel, watch variables and so on.

Embedding parallel algorithms into high-level language as opposed to being forced to use non-debuggable and non-refactorable strings of shader-like code.
Support for traditional control flow (ifs, loops, subroutines) and data structures (arrays work right now, structs coming soon).
JIT-compilation of computational kernels (some tools that implement #1-2 do all code generation at compile-time - Conflux defers this till the runtime and can leverage all the benefits of such approach, e.g. adjust its backend for target hardware).

There are similar projects, though the combination of the following features makes Conflux unique:

пятница, 19 октября 2012 г.

GTC 2012

На просторах интернета наткнулся на интересненькую презентацию. Если вы владеете английским языком, почитайте, интересно :)

GTC 2012

четверг, 18 октября 2012 г.

The Microsoft Accelerator


Для всех разработчиков, а так же для групп разработчиков, которые заинтересованы в использовании технологий компании Microsoft, таких как Kinect и Windows Azure, то Accelerator Windows для вас. В рамках этой программы Microsoft оказывает поддержку предпринимателей, помогая воплатить в жизнь огромное количество идей/бизнес-решений.

Каждая компания, участвующая в Microsoft Accelerator, получит инвестиции в размере $ 20.000, а так же все связанные с ним наборы развития, офисные помещения, все ресурсы Microsoft BizSpark, техническую подготовку и поддержку, наставничество со стороны предпринимателей, инвесторов и Microsoft руководителей. Всё это направленно на повышение собственного бизнеса.

В конце программы каждая компания будет иметь возможность выступить перед ведущими капиталистами, руководителями Microsoft, СМИ и другими влиятельными руководителями промышленностей.

CUDAfy.NET

CUDAfy.NET является .NET 4.0 библиотека, которая позволяет писать приложения NVIDIA CUDA с. NET. Нет отдельного CUDA файлов или сложных процедур настройки для запуска GPU функции устройства. 
Из этого следует модель программирования CUDA и любые знания, полученные в учебнике или книге на CUDA может быть легко передана CUDAfy . NET моды.

>>см. CUDA post

OpenCL.NET Общие сведения

Архитектура современных процессоров для увеличения производительности все чаще использует принципы параллелизма. Сталкиваясь с техническими проблемами высоких тактовых частот при фиксированном диапазоне электрического напряжения, производительность центральных процессоров (CPU, Central Processing Units) сейчас улучшается добавлением процессорных ядер. Графические процессоры (GPU, Graphics Processing Units) так же развились из устройств фиксированной функциональности построения графических сцен в программируемые параллельные процессоры. 
Ввиду того, что современные компьютеры часто включают высоко параллельные CPU, GPU и другие типы процессоров, важно дать возможность разработчикам программного обеспечения (ПО) использовать эти гетерогенные процессорные системы в полной мере.
Создание приложений для гетерогенных параллельных вычислительных платформ является сложным процессом, поскольку классические подходы к программированию для многоядерных CPU и GPU значительно различаются. Модели программирования CPU хотя в большинстве случаев и основаны на стандартах, но обычно они предполагают наличие общего адресного пространства и не учитывают возможность векторных операций.

Модели программирования GPU общего назначения, включая сложные иерархии памяти и векторные операции, традиционно остаются платформо-зависимыми. Эти ограничения затрудняют доступ разработчиков к обширной базе исходных кодов для CPU, GPU и других типов процессоров. Как никогда, сейчас требуется предоставить возможность разработчикам программного обеспечения эффективно использовать все преимущества гетерогенных вычислительных платформ - от высокопроизводительных вычислительных серверов, через персональные компьютеры к мобильным устройствам, которые включают разнообразные параллельные CPU, GPU и другие процессоры, такие как сигнальные (DSP) и ускорители Cell/B.E.

OpenCL (Open Computing Language) - открытый, не требующий лицензионных отчислений стандарт для универсального параллельного программирования различных типов процессоров. Стандарт предоставляет программистам переносимый и эффективный доступ ко всей мощи гетерогенных вычислительных платформ. OpenCL поддерживает широкий круг ПО: от встроенных и клиентских приложений до высокопроизводительных решений через достаточно низко-уровневневый, пригодный для использования в высокопроизводительных решениях, переносимый программный интерфейс.

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

OpenCL также хорошо подходит на важную роль в интенсивно развивающихся интерактивных графических приложений, которые включают как универсальные алгоритмы параллельных вычислений, так и алгоритмы построения сложных графических сцен.
Стандарт OpenCL описывает API для управления процессом параллельных вычислений среди гетерогенных процессоров; так же кросс-платформенный язык программирования с детально описанным вычислительным окружением.

Стандарт OpenCL:
  • поддерживает различные модели параллелизма;
  • использует подмножество стандарта С99 с расширениями поддержки параллелизма;
  • поддерживает стандарт арифметики чисел с плавающей точкой IEEE 754;
  • определяет профили конфигураций для переносных и встраиваемых устройств.

среда, 17 октября 2012 г.

GPU.NET ч.2

Как это работает?

Разработчик комментирует свой ​​код с помощью кнопок [Kernel] (атрибут в библиотеке устройств методами .NET), затем компилируется как обычно, с аннотациями для методов, которые должны быть выполнены на GPU. 
Инструмент сборки анализирует сборку и внедряет вызовов во время выполнения GPU.NET. 
В результате: кросс-платформенный, ускоренный GPU.NET.
При выполнении, среда выполнения(СВ) проверяет систему - аппаратное обеспечение. 
Затем СВ передает GPU (ядра) для правильной постановки плагина, так что метод может компилироваться в инструкции производителя оборудования, Set Architecture (ISA). 
Наконец, во время выполнения компилируется код устройства, и передается результат обратно из устройства.

Поясняющая диаграмма




GPU.NET ч.1

TidePowerd выпустили вторую версию их GPU вычислений для решения. NET Framework, GPU.NET. 

Эта платформа позволяет разработчикам легко и быстро написать GPU, полностью ускоренным приложениями .NET на основе языков. 
Ряд преимуществ:
  • "Шаблонный" GPU программирования задач, таких как передача памяти и GPU планирования абстрагируются от разработчика
  • Кросс-платформенные средства
  • Адаптация на новом оборудовании без изменений в коде
  • По скорости не уступает машинному коду
  • Visual Studio Error List и IntelliSense ->


CUDA.NET

Технология CUDA представляет собой аппаратно-программный комплекс, обеспечивающий использование мощностей видеоадаптера для неграфических вычислений.
CUDA расшифровывается как Compute Unified Device Architecture, что в переводе гласит: "Архитектура устройств с поддержкой универсальных вычислений". Эти устройства ни что иное, как видеокарты производства NVidia. Таких видеокарт с поддержкой CUDA выпущено очень много, как в дорогом, так и в дешёвом исполнении. Разумное использование технологии позволит получить неплохую производительность, но не всё так просто... 

First post

"Счастье не в том, чтобы делать всегда, что хочешь, а в том, чтобы всегда хотеть того, что делаешь."
Л.Толстой
Это мой первый пост и в нём я кратко опишу что, зачем и как.
Здесь я выкладываю тот материал, который изучил самостоятельно, узнал что-то новое, что-то смог создать в IT сфере. Это своеобразная шпаргалка, куда можно заглянуть и посмотреть на выполнение того или иного действия.
Меня зовут Влад. Я студент 3-го курса, программист. Изучаю различные новые и популярные технологии и заливаю сюда :)
Совсем недавно открыл для себя кое-что новенькое, но это в следующий раз... Займусь настройками, да и делать надо задание.