Форум программистов, компьютерный форум CyberForum.ru

C++

Войти
Регистрация
Восстановить пароль
 
aspire77
0 / 0 / 0
Регистрация: 07.05.2013
Сообщений: 12
#1

Реализация скалярного произведения двух векторов с оптиммизацией на CUDA - C++

24.11.2014, 00:48. Просмотров 829. Ответов 1
Метки нет (Все метки)

помагите реализовать операцию скалярного произведения двух векторов размерностью N на C++ с оптиммизацией на CUDA
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.11.2014, 00:48     Реализация скалярного произведения двух векторов с оптиммизацией на CUDA
Посмотрите здесь:

ScalarProduct для вычисления скалярного произведения двух векторов - C++
Написать программу для проверки работы процедуры ScalarProduct для вычисления скалярного произведения двух векторов. Заранее спасибо...

Написать программу для проверки работы процедуры ScalarProduct для вычисления скалярного произведения двух векторов - C++
Написать программу для проверки работы процедуры ScalarProduct для вычисления скалярного произведения двух векторов. Вот отрывок, надо...

Рассматривая каждую строку прямоугольной матрицы как вектор, найти номера векторов-строк, для которых модуль их скалярного произведения S имеет максим - C++
Рассматривая каждую строку прямоугольной матрицы как вектор, найти номера векторов-строк, для которых модуль их скалярного произведения S...

Обобщенное вычисление скалярного произведения - C++
Здравствуйте! С помощью шаблонов (их рекурсивных вызовов) должен был посчитать произведение на этапе компиляции. Только ругается на...

CUDA C/C++ сложение векторов - C++
вроде все так делаю, но не запускается не могу понять ошибку делаю с шаблона там просто надо заполнить недастоющие строчки вот шаблон ...

Реализовать класс Vector и перегруженные операции сложения (+), скалярного (%) и векторного (*) произведения - C++
Создайте класс Vector (вектор), включающий поля: координаты вектора. Реализуйте методы вывода вектора и вычисления длины вектора....

CUDA реализация гост 34.12(Кузнечик) - C++
Всем привет! Пытаюсь реализовать алгоритм шифрования Кузнечик с использованием основе технологии CUDA, столкнулся с проблемой медленного...

Матрица ( проверять знак произведения двух элементов каждого столбца и печать значения произведения...) - C++
Дана матрица A с 2 строками и 10 столбцами. В цикле, начиная с 1-го столбца матрицы, проверять знак произведения двух элементов каждого...

Вычисления смешанного произведения векторов - C++
Даны три вектора а=(a1, a2, a3), b=(b1, b2, b3) и c=(c1, c2, c3). Написать программу вычисления смешанного произведения этих векторов.

Определить ф-цию, нахождения векторного произведения векторов трёхмерного пространства - C++
Определить ф-цию, нахождения векторного произведения векторов трёхмерного пространства(без массивов). Параметрами ф-ции должны быть...

Реализация векторов и таблиц - C++
Помогите, пожалуйста! В этом коде выполнено сохранение нулевых элементов матрицы, расположенных ниже главной и вспомогательной...

Сумма двух векторов - C++
добрый вечер, имеется программа которая : "Создать 2 вектора (массива) с 1000 элементами из случайных чисел. Сложить эти вектора....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
aspire77
0 / 0 / 0
Регистрация: 07.05.2013
Сообщений: 12
02.12.2014, 23:55  [ТС]     Реализация скалярного произведения двух векторов с оптиммизацией на CUDA #2
помагите доделать.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// процедура вычисления скалярного умножения на видеокарте, возвращает массив по количеству блоков с суммой внутри блока 
__global__ void dot( float *a, float *b, float *c ) { 
    __shared__ float cache[threadsPerBlock]; 
    int tid = threadIdx.x + blockIdx.x * blockDim.x; 
    int cacheIndex = threadIdx.x; 
    float temp = 0; 
    while (tid < N) { 
        temp += a[tid] * b[tid]; 
        tid += blockDim.x * gridDim.x; 
    } 
    // сохраняем в кеш 
    cache[cacheIndex] = temp; 
    // ждем выполнения вычислений на всех нитях данного блока 
    __syncthreads(); 
    // редукция /2 
    int i = blockDim.x / 2; 
    while (i != 0) { 
        if (cacheIndex < i) cache[cacheIndex] += cache[cacheIndex + i]; 
        __syncthreads(); 
        i /= 2; 
    } 
    if (cacheIndex == 0) c[blockIdx.x] = cache[0]; 
}
Yandex
Объявления
02.12.2014, 23:55     Реализация скалярного произведения двух векторов с оптиммизацией на CUDA
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru