Публикации по теме '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