Описание тега gpu-shared-memory

Пространство памяти вычислительного ядра графического процессора, которое совместно используется всеми потоками блока в рабочей сетке ("рабочие элементы" в "рабочей группе" сетки на языке OpenCL).
5 ответов

Выделение общей памяти

Я пытаюсь выделить общую память, используя постоянный параметр, но получаю ошибку. мое ядро ​​выглядит так: __global__ void Kernel(const int count) { __shared__ int a[count]; } и я получаю сообщение об ошибке ошибка: выражение должно иметь постоянно…
03 апр '11 в 17:34
1 ответ

CUDA: перегрузка разделяемой памяти для реализации подхода сокращения с несколькими массивами

У меня есть 5 массивов больших размеров A(N*5), B(N*5), C(N*5), D(N*5), E(N*2) номер 5 и 2 представляет компоненты этих переменных в разных плоскостях / осях. Вот почему я структурировал массивы таким образом, чтобы я мог визуализировать данные, ког…
1 ответ

Актуальность конфликтов банков с общей памятью в Ферми и выше

Из того, что я прочитал в документации CUDA, конфликты в банках совместно используемой памяти не имеют значения для sm_20 и выше, поскольку значения передаются при одновременном запросе, предотвращая любые задержки сериализации. Документация: Аппара…
03 июл '14 в 15:04
2 ответа

Как определить общую память CUDA с размером, известным во время выполнения?

__shared__ Кажется, что память в CUDA требует известного размера во время компиляции. Однако в моей проблеме __shared__ объем памяти известен только во время выполнения, т.е. int size=get_size(); __shared__ mem[size]; Это закончится сообщением "ошиб…
30 мар '12 в 02:51
1 ответ

Стоит ли передавать параметры ядра через разделяемую память?

Предположим, что у нас есть массив int * dataкаждый поток получит доступ к одному элементу этого массива. Поскольку этот массив будет общим для всех потоков, он будет сохранен в глобальной памяти. Давайте создадим тестовое ядро: __global__ void test…
25 май '13 в 23:36
0 ответов

Совместно используемая память CUDA медленнее, чем глобальная, даже когда нет конфликтов с банками и многократное повторное использование данных

Я попытался использовать общую память для ускорения работы моего ядра. Оригинальная версия с использованием глобальной памяти выглядит так: __global__ void my_kernel(float* inout, float* in, float* const_array) { int y = blockIdx.y * blockDim.y + th…
09 ноя '17 в 12:01
1 ответ

Могу ли я получить объем выделенной динамической разделяемой памяти из ядра?

На стороне хоста я могу сохранить объем динамической разделяемой памяти, с которой я собираюсь запустить ядро, и использовать его. Я даже могу передать это в качестве аргумента ядру. Но - есть ли способ получить его напрямую из кода устройства, без …
13 окт '16 в 12:32
1 ответ

CUDA Нелегальный доступ к памяти, возможно, с "недостаточным" общим объемом памяти

У меня есть простое ядро ​​CUDA, которое может производить накопление векторов путем базового сокращения. Я масштабирую его, чтобы иметь возможность обрабатывать большие данные, разбивая их на несколько блоков. Тем не менее, мое предположение о выде…
12 ноя '16 в 08:31
1 ответ

Какова лучшая компьютерная практика общего назначения в OpenCL для итерационных задач?

Когда у нас есть программа, которая требует большого количества операций над большими наборами данных, и операции над каждым из элементов данных независимы, OpenCL может быть одним из лучших способов сделать это быстрее. У меня есть программа, подоб…
1 ответ

Ядро lauch, указывающее поток, но с размером общей памяти по умолчанию

Мне нужно указать поток для запуска ядра в CUDA. Ядро использует некоторую разделяемую память, размер которой определен в коде ядра. static const int cBlockSize = 256; __global__ fooKernel(void* param) { __shared__ uint32_t words[cBlockSize/16]; // …
11 сен '16 в 17:53
1 ответ

Практический пример использования разделяемой памяти GPU

У меня есть такой массив: data[16] = {10,1,8,-1,0,-2,3,5,-2,-3,2,7,0,11,0,2} Я хочу вычислить сокращение этого массива, используя разделяемую память на GPU G80. Ядро, упомянутое в документе NVIDIA, выглядит так: __global__ void reduce1(int *g_idata,…
03 апр '17 в 23:25
1 ответ

Получение ошибки CUDA "объявление несовместимо с предыдущим"variable_name"

Я пытаюсь скомпилировать программу, включая ядро ​​с MSVS 2012 и CUDA. Я использую разделяемую память, но в отличие от этого вопроса, касающегося той же проблемы, я использую имя моей переменной для разделяемой памяти этого ядра только один раз, поэ…
3 ответа

Ошибка запуска ядра, если объем разделяемой памяти, выделенной для всей сетки, превышает 48 КБ

Я работаю над проблемой N-тела, требующей большого количества общей памяти. В основном, есть N независимые задачи, каждая из которых использует 4 двойных переменных, то есть 32 байта. И одна задача выполняется потоком. Ради быстроты я использовал ра…
20 май '16 в 13:50
1 ответ

Максимум (общая память на блок) / (потоков на блок) в CUDA со 100% загрузкой MP

Я пытаюсь обработать массив больших структур с помощью CUDA 2.0 (NVIDIA 590). Я хотел бы использовать общую память для этого. Я экспериментировал с калькулятором занятости CUDA, пытаясь выделить максимум разделяемой памяти для каждого потока, чтобы …
16 апр '12 в 13:54
1 ответ

Является ли локальная память медленнее, чем разделяемая в CUDA?

Я нашел только замечание, что локальная память медленнее, чем память регистров, типа два на поток. Общая память должна быть быстрой, но быстрее ли она, чем локальная [потока]? То, что я хочу сделать, это своего рода медианный фильтр, но с заданным п…
3 ответа

Размер разделяемой памяти GPU очень мал - что я могу с этим поделать?

Размер разделяемой памяти ("локальная память" в терминах OpenCL) составляет всего 16 КиБ на большинстве современных графических процессоров nVIDIA.У меня есть приложение, в котором мне нужно создать массив, который имеет 10000 целых чисел. поэтому о…
13 фев '11 в 11:04
1 ответ

Предотвращает ли что-либо, кроме __syncthreads(), опасность общей памяти в процессе деформации чтения после записи?

У меня есть деформация, которая записывает некоторые данные в общую память - без перезаписи и вскоре после чтения из общей памяти. Хотя в моем блоке могут быть и другие перекосы, они не будут касаться какой-либо части этой общей памяти или записыват…
1 ответ

Настроить локальную (общую) память для OpenCL с использованием платформ Nvidia

Я хочу оптимизировать мой шаблон доступа к локальной памяти в моем ядре OpenCL. Я где-то читал о настраиваемой локальной памяти. Например, мы должны быть в состоянии настроить, какое количество используется для локальной памяти и какое количество ис…
16 сен '14 в 12:54
2 ответа

CUDA разделяет память и синхронизирует деформации

Следующий код хоста test.c и код устройства test0.cu предназначены для того, чтобы дать тот же результат. test.c $ cat test.c #include <stdio.h> #include <string.h> int main() { int data[32]; int dummy[32]; for (int i = 0; i < 32; i++…
08 янв '19 в 11:27
3 ответа

Есть ли предел для локальной памяти OpenCL?

Сегодня я добавил еще четыре __local переменные в мое ядро, чтобы вывести промежуточные результаты. Но просто добавив еще четыре переменные к сигнатуре ядра и добавив соответствующие аргументы ядра, преобразую весь вывод ядра в "0". Ни одна из функц…
08 мар '11 в 19:17