Публикации по теме 'thrust'


Программирование GPU через языковые границы
В этой статье делается попытка проиллюстрировать тот факт, что NVRTC + динамическое создание экземпляров может быть мощной парадигмой программирования CUDA для создания библиотек GPU, которые можно повторно использовать из произвольного языка, поддерживающего взаимодействие C/C++. Это было мотивацией моего проекта с открытым исходным кодом ThrustRTC и ряда подобных проектов. Важность и ограничения шаблонов в библиотеках GPU Библиотеки с интенсивными вычислениями в основном написаны на..

Вопросы по теме 'thrust'

Thrust: sort_by_key работает медленно из-за выделения памяти
Я делаю sort_by_key с массивами значений ключей размером 80 миллионов. Устройство представляет собой GTX 560 Ti с 2 ГБ видеопамяти. Когда доступная (свободная) память перед sort_by_key равна 1200MB , сортировка заканчивается в 200ms . Но...
1272 просмотров
schedule 15.12.2022

Как отсортировать два массива/вектора по значениям в одном из массивов, используя CUDA/Thrust
Это концептуальный вопрос в отношении программирования. Подводя итог, у меня есть два массива/вектора, и мне нужно отсортировать один с изменениями, распространяющимися и на другой, так что, если я сортирую arrayOne, для каждого обмена в сортировке...
2152 просмотров
schedule 15.03.2023

Вставить итератор подсчета внутри функции
Большое спасибо за ответы на Пользовательскую функцию Cuda Thrust И последнее, если бы я хотел передать другой вектор для копирования таких значений? for (i=0;i<n;i++) for (j=0;j<n;j++) y[i*n+j]=h1[i]*a1[pos*n+j];...
678 просмотров
schedule 26.03.2023

Работа с чередующимися данными в тяге
как лучше всего работать с чередующимися данными в тяге, скажем, я хочу добавить значения с длиной чередования, равной 3, например: [1, 2, 3, 4, 5, 6] даст [6, 15] или деперемежение данных, поэтому [1, 2, 3, 4, 5, 6, 7, 8, 9]...
902 просмотров
schedule 30.06.2023

Самый быстрый способ доступа к векторным элементам устройства непосредственно на хосте
Я отсылаю вас к следующей странице http://code.google.com/p/thrust/wiki/QuickStartGuide#Vectors . Пожалуйста, посмотрите второй абзац, где говорится, что Также обратите внимание, что к отдельным элементам device_vector можно получить доступ,...
1930 просмотров
schedule 21.06.2022

Использование нескольких графических процессоров для одного вызова функции Thrust
Можно ли заставить функции Thrust использовать несколько графических процессоров для своих вычислений, если они доступны? Я написал этот код Thrust, который отлично работает с одним графическим процессором. (Tesla C2050) Но у меня есть еще три карты...
489 просмотров
schedule 04.10.2022

не могу создать предикат сравнения для функции Thrust::cuda min_element()
Я получаю раздражающее сообщение, и я не совсем уверен, что я делаю неправильно. float4 *IntsOnHost = new float4[ MAXX * (MAXY - 1) ]; //copy possible intersection points from device to host...
773 просмотров
schedule 12.11.2022

Использование библиотеки Thrust для CUDA для уменьшения массива
Я использую тягу, чтобы найти сумму массива, c, но я продолжаю получать ошибку компилятора "ошибка: выражение должно иметь тип класса" float tot = thrust::reduce(c.begin(), c.end()); Это строка кода, которая не работает, c представляет собой...
5452 просмотров
schedule 21.04.2023

Преобразование тяги :: итераторов в необработанные указатели и обратно
Я хочу использовать библиотеку Thrust для вычисления суммы префиксов массива устройств в CUDA. Мой массив выделен cudaMalloc() . Мое требование заключается в следующем: main() { Launch kernel 1 on data allocated through cudaMalloc()...
7049 просмотров
schedule 11.05.2023

Ошибка компиляции при изменении серверной системы тяги с помощью CUDA 5
Недавно я установил CUDA 5 и обнаружил, что существующий код, основанный на Thrust, не может быть скомпилирован. Ошибка возникает только в том случае, если я переключаюсь на OMP или TBB. Поэтому я провел эксперимент, используя monte_carlo.cpp из...
327 просмотров
schedule 16.02.2023

Есть ли у CUDA Thrust::inclusive_scan() параметр инициализации?
Согласно библиотеке Thrust , thrust::inclusive_scan() имеет 4 параметры: OutputIterator thrust::inclusive_scan(InputIterator first, InputIterator last,...
611 просмотров
schedule 20.07.2023

Как инициализировать вектор CUDA Thrust без неявного вызова «копирования»?
У меня есть указатель int *h_a , который ссылается на большое количество N точек данных (на хосте), которые я хочу скопировать на устройство. Итак, я делаю: thrust::host_vector<int> ht_a(h_a, h_a + N); thrust::device_vector<int>...
3495 просмотров
schedule 10.05.2022

Обертывание векторов тягового устройства в структуру?
Я реализую математический алгоритм, который требует хранения ~ 15 различных векторов поплавков. Я хотел бы обернуть все эти векторы устройств в структуру typedef struct { thrust::device_vector<float> ... } data; и передайте эту...
806 просмотров
schedule 14.09.2022

Почему компилятор выдает ошибку?
thrust::host_vector<int> A; thrust::host_vector<int> B; int rand_from_0_to_100_gen(void) { return rand() % 100; } __host__ void generateVector(int count) { thrust::host_vector<int> A(count);...
67 просмотров
schedule 19.11.2022

Доступ к элементу host_vector (thrust library), выделенному с помощью pinned_allocator
У меня есть следующий вектор: thrust::host_vector< T , thrust::cuda::experimental::pinned_allocator< T > > h_vector где T в моем текущем случае имеет тип float . Я хотел бы получить доступ к i-му элементу правильным образом с...
463 просмотров
schedule 20.11.2022

засунуть динамическое выделение памяти для массива
У меня есть функтор, используемый тягой, где мне нужно динамически указать его длину, например struct func { const int h; func(const int _h): h(_h) {} __device__ __host__ void operator()(int id) {...
634 просмотров
schedule 17.05.2023

Как использовать массив структур в Thrust::Sort?
Я новичок в разработке CUDA и пытаюсь отсортировать массив структур, используя метод сортировки библиотеки. Моя структура такова: #define N 307200 struct distanceVector { Point3D a, b; float distance; }; Я хочу отсортировать массив...
1198 просмотров
schedule 29.07.2023

CUDA Как передавать и изменять объекты на устройстве
Я пытаюсь реализовать базовую объектную программу в CUDA. У меня есть следующий класс: /* * File: Point.h */ class Point { private: float x; float y; float z; public: __host__ __device__ Point(float...
449 просмотров
schedule 27.04.2023

Проверка наличия в матрице нанов или бесконечных значений в CUDA
Каков эффективный способ проверить большую матрицу на наличие элементов inf / nan в CUDA (С++)? Матрица хранится как float* в памяти графического процессора. Мне не нужно расположение этих элементов, просто логический ответ да/нет, если...
5437 просмотров
schedule 03.11.2022

Умножить вектор устройства на константу
Я использую тягу для проекта, и, похоже, ему не хватает некоторых основных функций: - В С++ самый простой способ умножить вектор на константу — использовать std::transform и std::bind1st следующим образом: std::transform(vec.begin(),...
2604 просмотров
schedule 24.11.2022