Описание тега gpu-atomics

Modern GPUs support atomic operations in different memory spaces. These are different in implementation and in consequences on execution flow than atomic operations on CPUs.
1 ответ

Атомные счетчики OpenGL против атомных в SSBO

Я наткнулся на эту статью, в которой говорится, что нет никаких различий в производительности между атомарными буферами счетчика и атомарной переменной в SSBO: https://software.intel.com/en-us/articles/opengl-performance-tips-atomic-counter-buffers-…
19 янв '17 в 08:06
1 ответ

atomicInc() не работает

Я попробовал ниже программу, используя atomicInc(). __global__ void ker(int *count) { int n=1; int x = atomicInc ((unsigned int *)&count[0],n); CUPRINTF("In kernel count is %d\n",count[0]); } int main() { int hitCount[1]; int *hitCount_d; hitCou…
02 авг '13 в 04:48
1 ответ

Атомные операции в CUDA

Следующая программа использовала реализацию атомарных блокировок из "Cuda By Example", но при запуске программы моя машина зависла. Может кто-нибудь сказать мне, что не так с моей программой? большое спасибо Ифэй #include <stdio.h> __global__ …
18 янв '12 в 20:59
1 ответ

Атомная операция в ядре OpenCL

Когда я пытался найти больше деталей об атомарных операциях в ядре, я обнаружил кое-что странное. Как я понимаю, когда атомарные операции используются для одного числа, все операции такого рода из всех потоков будут сериализованы для запуска по этом…
03 окт '12 в 13:59
1 ответ

Атомная Добавить на Cuda не работает..

Моя проблема состоит в том, чтобы узнать количество целых точек в n-мерной сфере, используя CUDA. Я не понимаю, что не так с приведенным ниже кодом, но он все время выдает 0. CUDA Compute - 2.0, а версия набора инструментов - 3.10. Спасибо за помощь…
19 июн '15 в 08:01
7 ответов

CUDA: сокращение или атомные операции?

Я пишу ядро ​​CUDA, которое включает в себя вычисление максимального значения для данной матрицы, и я оцениваю возможности. Лучший способ найти: Заставить каждый поток хранить значение в общей памяти и использовать алгоритм сокращения после этого дл…
07 май '11 в 21:01
1 ответ

Атомные операции в CUDA? Какой заголовочный файл включить?

Для использования атомарных операций в CUDA необходимо ли включать какой-либо заголовочный файл CUDA? Руководство по программированию в CUDA, похоже, очень близко к этому. Код glmax.cu, приведенный ниже, дает мне следующую ошибку компиляции. gaurish…
03 ноя '11 в 21:45
1 ответ

Cuda Atomic добавить видимость

В CUDA результат атомарной операции сразу виден потокам других деформаций в том же блоке, что и блок, выполняющий атомарную операцию? В случае неатомарной операции, я знаю, что результат может быть не виден до __syncthreads() вызывается.
26 июл '11 в 21:32
1 ответ

CUDA Atomic операция над массивом в глобальной памяти

У меня есть программа CUDA, ядро ​​которой в основном делает следующее. Я предоставляю список из n точек в декартовых координатах, например (x_i,y_i) в плоскости измерения dim_x * dim_y. Я призываю ядро ​​соответственно. Для каждой точки на этой пло…
27 ноя '13 в 10:30
1 ответ

Как иметь атомную нагрузку в CUDA

Мой вопрос, как я могу иметь атомную нагрузку в CUDA. Атомный обмен может подражать атомному хранилищу. Может ли атомная нагрузка недорогим образом эмулироваться аналогичным образом? Я могу использовать атомарное добавление с 0 для атомарной загрузк…
01 сен '15 в 21:19
1 ответ

Критические разделы CUDA, модель выполнения потоков / деформаций и решения компилятора NVCC

Недавно я опубликовал этот вопрос о критическом разделе. Вот похожий вопрос. В этих вопросах данный ответ говорит, что это зависит от компилятора, если код "работает" или нет, потому что порядок различных путей выполнения зависит от компилятора. Что…
1 ответ

Атомарные операции над общей памятью

Как я могу сделать атомарную операцию на общей памяти?у меня есть что-то похожее на это: __shared__ int a[10]; //set a if(tid<5) a[2]++; поэтому 5 потоков увеличиваются. Как я могу это сделать?я знаю, что таким образом я сериализирую выполнение 5…
22 апр '11 в 13:36
1 ответ

Как использовать атомарные операции над SSBO в вычислительном шейдере

Пример кода Вот шейдерный компьютер для иллюстрации моего вопроса layout(local_size_x = 64) in; // Persistent LIFO structure with a count of elements layout(std430, binding = 0) restrict buffer SMyBuffer { int count; float data[]; } MyBuffer; bool A…
05 дек '17 в 20:17
1 ответ

Почему атомная функция CUDA не работает?

Проблема в том, что я хочу подать заявку atomicMin в массив int. Мой массив состоит из 6 элементов и код: #include <stdlib.h> #include <stdio.h> __global__ void kernel(int * globalmax, int * r){ int val = r[threadIdx.x]; *globalmax = ato…
28 май '13 в 13:04
1 ответ

Ускорение расчета атомарности CUDA для многих лотков / нескольких лотков

Я пытаюсь оптимизировать свои вычисления гистограммы в CUDA. Это дает мне отличное ускорение по сравнению с соответствующими вычислениями процессора OpenMP. Тем не менее, я подозреваю (в соответствии с интуицией), что большинство пикселей попадают в…
17 сен '16 в 05:49
3 ответа

Ошибка: идентификатор "atomicAdd" не определен в Visual Studio 2010 и Cuda 4.2 с графическим процессором Fermi

Я пытался скомпилировать некоторые коды CUDA в Visual Studio 2010 с помощью CUDA 4.2 (я создал этот проект CUDA с использованием Parallel Nsight 2.2), но я столкнулся с атомарной проблемой "ошибка: идентификатор"atomicAdd"не определен", которую я до…
18 июл '12 в 00:28
1 ответ

CUDA: атомарная операция на разделяемой памяти

Мое ядро ​​cuda генерирует что-то, что подается на хост в конце выполнения блока. Скелет выглядит следующим образом.host_data, в который записываются данные, выделяется как память, отображаемая хостом.host_data_count - также отображенная память, кот…
03 фев '12 в 10:45
1 ответ

Гарантированы ли атомные операции в CUDA запланированными для каждой деформации?

Предположим, у меня есть 8 блоков по 32 потока, каждый из которых работает на GTX 970. Каждый blcok записывает все 1 или все 0 в массив длиной 32 в глобальной памяти, где поток 0 в блоке записывает в позицию 0 в массиве. Теперь для записи фактически…
12 апр '17 в 20:05
1 ответ

Cuda Atomic Lock: потоки в последовательности

У меня есть код, раздел которого должен быть выполнен критически. Я использую блокировку для этого фрагмента кода, чтобы каждый поток ядра (настроенный с одним потоком на блок) выполнял этот фрагмент кода атомарно. Меня беспокоит порядок потоков - м…
11 сен '14 в 15:12
2 ответа

Как глобальные атомарные операции реализованы в Kepler? Я получил меньше производительности, используя gmem, а не атомные

Я хотел бы знать реализацию глобальной атомики в Кеплере. увидеть этот кусок кода: 1. if (threadIdx.x < workers) { 2. temp = atomicAdd(dst, temp + rangeOffset); 3. if (isLastPartialCalc(temp)) { 4. atomicAdd(dst,-300000.0f); 5. } 6. } если я изме…
01 июл '13 в 12:40