Описание тега cuda-streams
Потоки CUDA - это аппаратно поддерживаемые очереди на графических процессорах CUDA, через которые планируется работа (запуск ядра, передача памяти и т. Д.)
1
ответ
Несколько вызовов ядра в CUDA
Я пытаюсь вызвать одно и то же ядро в CUDA (с одним другим входным параметром) несколько раз, но оно выполняет только первое и не следует за другими вызовами ядра. Предположим, что входные массивы new_value0=[123.814935276; 234; 100; 166; 203.0866…
06 ноя '15 в 10:20
2
ответа
CUDA Dynamic Parallelism, bad performance
We are having performance issues when using the CUDA Dynamic Parallelism. At this moment, CDP is performing at least 3X slower than a traditional approach. We made the simplest reproducible code to show this issue, which is to increment the value of…
19 июл '17 в 21:10
1
ответ
Поведение потока 0 (по умолчанию) и других потоков
В CUDA, как поток 0 связан с другими потоками? Выполняется ли поток 0 (поток по умолчанию) одновременно с другими потоками в контексте или нет? Рассматривая следующий пример: cudaMemcpy(Dst, Src, sizeof(float)*datasize, cudaMemcpyHostToDevice);//str…
26 авг '13 в 11:38
2
ответа
Пусть nvidia K20c использует старый способ управления потоками?
От K20 различные потоки становятся полностью параллельными (раньше они были параллельными). Однако моей программе нужен старый способ. Или мне нужно сделать много синхронизации, чтобы решить проблему зависимости. Можно ли переключить управление пото…
11 фев '13 в 09:53
1
ответ
Повторное использование плана CUDA FFT в нескольких "перекрывающихся" запусках CUDA Stream
Я пытаюсь улучшить производительность моего кода с помощью асинхронной передачи памяти, перекрытой вычислениями на GPU. Раньше у меня был код, в котором я создал план FFT, а затем использовал его несколько раз. В такой ситуации время, потраченное на…
04 мар '15 в 13:33
3
ответа
Данные перекрытия CUDA не работают
Использование пар для перекрытия передачи данных с выполнением ядра не работает в моей системе. Здравствуйте, я хочу использовать перекрывающиеся вычисления и передачи данных в CUDA, но я не могу. Справочный документ NVIDIA гласит, что при использов…
31 мар '13 в 08:19
1
ответ
Почему я не получаю перекрытие ввода-вывода с этим кодом?
Следующая программа: #include <iostream> #include <array> using clock_value_t = long long; __device__ void gpu_sleep(clock_value_t sleep_cycles) { clock_value_t start = clock64(); clock_value_t cycles_elapsed; do { cycles_elapsed = clock…
26 окт '17 в 22:45
1
ответ
Потоки CUDA и параллельное выполнение ядра
Я хотел бы использовать потоки для распараллеливания выполнения ядер, которые работают с отдельными массивами данных устройства. Данные размещались на устройстве и заполнялись из предыдущих ядер. Я написал следующую программу, которая показывает, чт…
19 июн '13 в 21:14
1
ответ
Как заставить несколько API-интерфейсов CUBLAS (например, cublasDgemm) действительно выполняться одновременно в нескольких cudaStream
Я хочу, чтобы два API-интерфейса CUBLAS (например,.cublasDgemm) действительно выполнялись одновременно в двух cudaStreams. Как мы знаем, API CUBLAS является асинхронным, подпрограммы уровня 3, такие как cublasDgemm, не блокируют хост, это означает, …
30 дек '16 в 03:40
1
ответ
Является ли cuStreamAddCallback столь же эффективным, как cuStreamSynchronize, при наличии последних бит данных на хосте?
В документации CUDA(API драйвера) говорится Начало выполнения обратного вызова имеет тот же эффект, что и синхронизация события, записанного в том же потоке, непосредственно перед обратным вызовом. Таким образом, он синхронизирует потоки, которые бы…
25 фев '18 в 17:29
2
ответа
Потоки CUDA не перекрываются
У меня есть что-то очень похожее на код: int k, no_streams = 4; cudaStream_t stream[no_streams]; for(k = 0; k < no_streams; k++) cudaStreamCreate(&stream[k]); cudaMalloc(&g_in, size1*no_streams); cudaMalloc(&g_out, size2*no_streams); …
20 май '11 в 10:10
1
ответ
CUDA - возможно ли обрабатывать данные буфера (массива) в один пиксель одновременно на нескольких ядрах?
В настоящее время у меня есть один пиксельный буфер, и я обрабатываю данные в нем с помощью одного вызова ядра: dim3 threadsPerBlock(32, 32) dim3 blocks(screenWidth / threadsPerBlock.x, screenHeight / threadsPerBlock.y); kernel<<<blocks, th…
04 фев '14 в 00:34
2
ответа
Cuda Stream Processing для нескольких ядер
Привет несколько вопросов, касающихся обработки потоков Cuda для нескольких ядер. Предположим, что s потоков и ядро в совместимом устройстве 3.5, где s <= 32. Ядро использует массив dev_input размера n и выходной массив dev размера s*n. Ядро считы…
20 фев '13 в 12:49
1
ответ
Чтение обновленной памяти из другого потока CUDA
Я пытаюсь установить флаг в одной функции ядра и прочитать его в другой. По сути, я пытаюсь сделать следующее. #include <iostream> #include <cuda.h> #include <cuda_runtime.h> #define FLAGCLEAR 0 #define FLAGSET 1 using namespace st…
04 ноя '13 в 19:41
1
ответ
Сколько операций cudaMemcpyAsync можно выполнить одновременно?
Рассматривая следующий случай: //thread 0 on device 0: cudaMemcpyAsync(Dst0, Src0, ..., stream0);//stream0 is on Device 0; ... //thread 1 on device 1: cudaMemcpyAsync(Dst1, Src1, ..., stream1);//stream1 is on Device 1; Могут ли две операции memcpy п…
23 ноя '13 в 02:58
1
ответ
Как Hyper-Q GK110 обеспечивает параллелизм нескольких потоков?
Если я хочу извлечь выгоду из механизма Hyper-Q в Kepler GK110, т. Е. Чтобы два потока были помещены в две разные очереди работы оборудования, чтобы избежать ложных зависимостей, необходимо ли мне создать два потока с двумя потоками ЦП или процесс у…
28 июл '13 в 06:55
1
ответ
В CUDA гарантируется, что поток по умолчанию равен nullptr?
В CUDA driver_types.h у нас есть: typedef __device_builtin__ struct CUstream_st *cudaStream_t; И в cuda_runtime.h у нас во многих местах есть инициализированные по умолчанию параметры потока. Например: template<class T> static __inline__ __hos…
16 июл '15 в 15:07
0
ответов
Использование cv::cuda::stream для асинхронной обработки изображений в opencv
Я использую OpenCV 3.4 с библиотеками cuda для обработки видеоизображений. Изображение захватывается и загружается через устройство с помощью GpuMat::upload(), После этого изображение подвергается двойному порогу для создания двух разных двоичных из…
17 янв '19 в 10:44
1
ответ
Почему операции в двух потоках CUDA не перекрываются?
Моя программа представляет собой конвейер, который содержит несколько ядер и memcpys. Каждая задача будет проходить через один и тот же конвейер с разными входными данными. Хост-код сначала выбирает канал, инкапсуляцию памяти блокнота и объекты CUDA…
15 янв '19 в 14:47
1
ответ
CUDA поток медленнее обычного ядра
Я пытаюсь понять потоки CUDA, и я сделал свою первую программу с потоками, но это медленнее, чем обычная функция ядра... почему этот код медленнее cudaMemcpyAsync(pole_dev, pole, size, cudaMemcpyHostToDevice, stream_1); addKernel<<<count/10…
09 дек '12 в 09:54