Описание тега 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 представляет компоненты этих переменных в разных плоскостях / осях. Вот почему я структурировал массивы таким образом, чтобы я мог визуализировать данные, ког…
19 дек '17 в 22:18
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 может быть одним из лучших способов сделать это быстрее. У меня есть программа, подоб…
21 июл '16 в 01:35
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. Я использую разделяемую память, но в отличие от этого вопроса, касающегося той же проблемы, я использую имя моей переменной для разделяемой памяти этого ядра только один раз, поэ…
10 дек '13 в 14:33
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?
Я нашел только замечание, что локальная память медленнее, чем память регистров, типа два на поток. Общая память должна быть быстрой, но быстрее ли она, чем локальная [потока]? То, что я хочу сделать, это своего рода медианный фильтр, но с заданным п…
30 авг '11 в 09:20
3
ответа
Размер разделяемой памяти GPU очень мал - что я могу с этим поделать?
Размер разделяемой памяти ("локальная память" в терминах OpenCL) составляет всего 16 КиБ на большинстве современных графических процессоров nVIDIA.У меня есть приложение, в котором мне нужно создать массив, который имеет 10000 целых чисел. поэтому о…
13 фев '11 в 11:04
1
ответ
Предотвращает ли что-либо, кроме __syncthreads(), опасность общей памяти в процессе деформации чтения после записи?
У меня есть деформация, которая записывает некоторые данные в общую память - без перезаписи и вскоре после чтения из общей памяти. Хотя в моем блоке могут быть и другие перекосы, они не будут касаться какой-либо части этой общей памяти или записыват…
20 апр '17 в 12:21
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