Как стать автором
Обновить
9
0
Mikhail Didur @lucky_rydar

с++ developer

Отправить сообщение
Не беспокойтесь, я тестировал код со второго раза. Спасибо, что подметили.
Я пробовал, что будет с double, во всех тестах как CPU так и GPU в параллеле считают его в два раза дольше чем float
Что то такое у меня получилось, цикл всё равно приходится использовать, но в теории должно работать быстрее.
auto device = compute::system::default_device(); //тут поменяешь на тот девайс 
//который у тебя процессор
auto context = compute::context(device);
auto queue = compute::command_queue(context, device);
	
vector<float> host_vec = { 1, 2, 3, 4, 5};

compute::vector<float> A(host_vec.begin(), host_vec.end(), queue);
compute::vector<float> B(host_vec.begin(), host_vec.end(), queue);

compute::vector<float> C(host_vec.size(), context);
float temp_res = 0;
float res = 0;

auto B_iter = B.begin();
for (size_t i = 0; i < host_vec.size(); i++)
{
	compute::transform(A.begin(), A.end(), C.begin(), 
        compute::_1 * B_iter.read(queue) /*+ещё какие-то вычисления*/, queue);
	compute::reduce(C.begin(), C.end(), &temp_res, queue);
	res += temp_res;
	B_iter++;
}
cout << res << endl;


UPD: Для большей эффективности можешь вызвать все что в цикле асинхронно.
Напиши в лс, может, смогу помочь.
Если кому то что то не понятно, не стесняйтесь писать в лс или в комментарии.
А что на счёт других алгоритмов? Один из из них работает с такой же разницей в скорости как и сортировка.
Согласен, это вода, сейчас удалю.
Добавил больше тестов, возможно дело в том что ЦПУ не такой уж и слабый.
Скорее всего будет быстрее, а может это только с сортировкой так. Я на CUDA ничего ещё не писал, думаю пришло время что то попробовать. Наверное стоит добавить тесты разных функций.
Дело в том что в этой либе можно использовать так называемый хостовый вектор(в примерах из оригинальной доки они всегда используются), где будет хранится оригинал данных, но это не обязательно. Лично я использую его только чтоб использовать std::generate, но можно и переписать всё под себя для compute::vector, используя итераторы.
Уже поправил) Сделаю сравнение работы на разных устройствах в следующей части.

Информация

В рейтинге
Не участвует
Откуда
Украина
Дата рождения
Зарегистрирован
Активность