Nvidia открыла исходный код нового компилятора CUDA на базе LLVM. Сорцы не раздаются направо и налево, а доступны только для «квалифицированных исследователей и разработчиков». Для их получения нужно зарегистрироваться, заполнить
форму и указать, для каких проектов вы намерены применять компилятор. Так что пока непонятно, под какой лицензией опубликован компилятор и вообще — свободная ли это лицензия. В
пресс-релизе компания намекает на более открытый доступ к исходникам в будущем.
С помощью компилятора и нового CUDA Toolkit 4.1 можно будет приспособить платформу GPGPU для других архитектур и процессоров, в том числе AMD GPU и x86 CPU, а также создавать гетерогенные суперкомпьютерные системы.
14 декабря 2011, 22:31
17

Отладка параллельного кода – процесс утомительный и умозатратный. Ошибки распараллеливания проблематично отловить из-за недетерминированности поведения параллельных приложений. Более того, если ошибка обнаружена, ее часто сложно воспроизвести снова. Бывает, что после изменения кода, сложно удостовериться, что ошибка устранена, а не замаскирована. Чаще всего, ошибки в параллельной программе являются
гейзенбагами. Порой испытываешь острую потребность в максимально удобных и функциональных инструментах отладки параллельных программ.
Реальное доказательство того, что GPU может осуществлять сортировку данных (алгоритм radix) в несколько раз быстрее, чем CPU.
Дуэйн Мэррилл (Duane Merrill) и Эндрю Гримшоу (Andrew Grimshaw) с кафедры вычислительной техники Виргинского университета в Шарлотсвилле опубликовали под свободной лицензией свой метод сортировки
SRTS Radix Sort, в котором GTX 480 показывает скорость сортировки более 1 млрд 32-битных ключей в секунду: примерно вчетверо быстрее, чем на процессоре Core i7.
Метод подходит для любых CUDA-устройств. Текущая версия поддерживает сортировку любых встроенных числовых типов данных C/C++ (например, signed char, float, unsigned long long), а также автоматическую оптимизацию в случаях, если все ключи имеют одинаковую длину (ускорение сортировки в пять раз).
30 августа 2010, 13:18
15
Разделяемая (shared) память является очень эффективным средством оптимизации за счет очень быстрого доступа (в 100 раз быстрее чем глобальная память). Однако, при неправильном использовании ее возможны конфликты банков, которые существенно замедляют быстродействие. В данной статье пойдет речь о том, как эти конфликты возникают, и как их избежать.
13 августа 2010, 06:30
19
По специфике работы часто приходится заниматься симуляциями на GPU с использованием генераторов псевдослучайных чисел. В результате накопился опыт, которым решил и поделиться с сообществом.
Компания
NVIDIA выпускает новый коммерческий продукт —
NVIDIA Parallel Nsight, который представляет собой пакет инструментов интегрирующихся в
Visual Studio 2008 SP1. NVIDIA Parallel Nsight предлагает инструменты для разработки параллельных приложений использующих на полную мощность возможности многоядерных процессоров и современных ускорителей
GPU.

Основная тема этой части – оптимизация работы с глобальной памятью при программировании GPU.
У GPU есть ряд особенностей, игнорирование которых может стоить многократной потери производительности при использовании глобальной памяти. Но если учесть все тонкости, то можно получить действительно эффективные CUDA-программы.
Приступаем.

Как известно, технология CUDA доступна только для видеокарт nVidia. Из-за этого факта часто возникают вопросы: как быть владельцам видеокарт ATI Radeon, и стоит ли вообще использовать решения, доступные на аппаратных средствах только одного производителя.
В связи с этим, я решил немного уточнить, что же из себя представляет CUDA,
В процессе работы с CUDA я практически не касался вопросов об использовании памяти видеокарты. Настало время убрать этот пробел.
Внутренняя модель nVidia GPU – ключевой момент в понимании GPGPU с использованием CUDA. В этот раз я постараюсь наиболее детально рассказать о программном устройстве GPUs.