2013-12-23 3 views
2

В настоящее время я разрабатываю программу на базе графического процессора, которая использует несколько ядер, которые запускаются одновременно с использованием нескольких потоков.Атомные операции CUDA и запуск параллельного ядра

В моем приложении несколько ядер должны получить доступ к очереди/стеку , и я планирую использовать атомные операции.

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

+3

Вы пробовали что-нибудь? Это не моя область, но если вы попытались что-то другое, то некоторые пользователи смогут лучше помочь с некоторым кодом :) –

+0

Из руководства по программированию CUDA C: _ атомная функция выполняет атомарную операцию чтения-модификации-записи на одном 32-разрядное или 64-разрядное слово, находящееся в глобальной или разделяемой памяти. [...] Операция является атомарной в том смысле, что она гарантированно выполняется без помех от других потоков. Из Руководства по лучшей практике CUDA C: _ На устройствах, способных выполнять одновременное выполнение ядра, потоки также могут использоваться для выполнять несколько ядер одновременно, чтобы более полно использовать мультипроцессоры устройства _ _ – JackOLantern

+0

Объединив две вещи, я бы сказал, что если вы запускаете разные ядра, работающие с независимыми данными в разных потоках, и каждое ядро ​​использует атомные операции, то операции внутри каждое ядро ​​может быть «сериализовано», но ядра могут работать одновременно с использованием различных ресурсов, доступных в графическом процессоре (ядра, блоки загрузки/сохранения и специальные функциональные блоки). – JackOLantern

ответ

5

Атомная техника реализована в аппаратном обеспечении кэша L2 GPU, через которое должны пройти все операции памяти. Для обеспечения согласованности между памятью хоста и устройства или между различными графическими процессорами нет аппаратного обеспечения; но пока ядра работают на одном и том же графическом процессоре и используют память устройства на этом графическом процессоре для синхронизации, атомика будет работать должным образом.

Смежные вопросы