Основы технологии CUDA

0
39

CUDA — это платформа параллельных вычислений, предназначенная для универсальных вычислений на графических процессорах (GPU). Он расшифровывается как Compute Unified Device Architecutre и разработан NVIDIA. Но, начнем с самого начала. Параллельные вычисления — это метод выполнения вычислений, при котором одновременно выполняется множество операций. Блок графического процессора является примером устройства, которое может выполнять такие вычисления. Первоначально графические процессоры создавались для помощи в процессе генерации изображений. Тем не менее, сегодня их можно использовать для выполнения многих других вычислений, которые называются вычислениями общего назначения на графических процессорах.(ГПГПУ). В 2006 году NVIDIA анонсировала архитектуру CUDA вместе с языком C, предназначенным для GPU. Очень похожая технология под названием OpenCL была опубликована в 2009 году и, в отличие от CUDA, реализована в оборудовании, произведенном разными компаниями, а не только NVIDIA. Сейчас имеют большое значение cuda ядра.
Кто-то может спросить, зачем вообще беспокоится о некоторых графических процессорах, если процессоры сегодня настолько эффективны. Они есть, но в плане последовательной обработки. Во многих приложениях нам нужно выполнить огромное количество точно таких же операций, например, сложить два очень больших вектора с 1M элементами вместе. Оказывается, мы можем получить наш результат намного быстрее, используя множество слабых вычислительных блоков, где каждый отдельный блок должен обрабатывать всего около 1000 векторных элементов, вместо того, чтобы иметь один мощный блок, который должен вычислять все 1M результатов. Они говорят: «Сила в числах». В то время как большинство процессоров имеют 4 или 8 ядер, графический процессор может иметь даже 3072 ядра (NVIDIA Tesla M40), оптимизированных для массовых параллельных вычислений. В видео ниже вы можете увидеть действительно яркое объяснение разницы между CPU и GPU.

Одно из важнейших понятий CUDA — это ядро . Ядро — это просто функция, которая выполняется параллельно N различными потоками CUDA. Когда вызывается ядро, мы должны указать, сколько потоков должно выполнять нашу функцию. Мы различаем код устройства и код хоста. Код устройства выполняется на GPU, а код хоста — на CPU.

ОСТАВЬТЕ ОТВЕТ

Please enter your comment!
Please enter your name here