С Новым годом! Форум программистов, компьютерный форум, киберфорум
OpenCL
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
OpenCL Программный кэш GPU Всем доброго времени суток! Скажите, пожалуйста, может ли быть такое, что объём программы OpenCL настолько велик, что GPU в принципе не сможет исполнить этот код? Дело в чём - недавно я перешёл от вычислительных шейдеров OpenGL к OpenCL (работаю в Qt 5.15.3; компиляция программы OpenCL через CUDA 12.4 (551.61, windows) по стандарту OpenCL 3.0 (выставляется само, но я пишу код сверяясь со... https://www.cyberforum.ru/ opencl/ thread3162396.html OpenCL clCreateKernel возвращает код ошибки -45 OpenCL
Пытаюсь первый раз запустить параллельную программу на OpenCL, но столкнулся с проблемой clCreateKernel возвращает -45 - CL_INVALID_PROGRAM_EXECUTABLE перед выполнением программы получается узнать название устройства, частоту и т.д. в свойствах драйвера есть opencl32.dll и opencl64.dll версия драйвера - 30.0.15.1179 Скачал прогу Geeks3D GPU Caps Viewer показывает, что OpenCL поддерживает...
OpenCL Посчитать скалярное произведение dtrnjhjd https://www.cyberforum.ru/ opencl/ thread3145253.html
Задание:посчитать значение b = (A*SORT(C)), где SORT(C) - сортировка вектора по возрастанию, A*SORT(C) - скалярное произведение векторов, т.е. A*C+A*C +...+A*C. Составить программу с использованием OpenCL и с применением локальной памяти. У меня есть решенная задача на OpenCL, но без распараллеливания: #include <CL/cl.h> #include <stdio.h> #include <stdlib.h> #include <iostream>...
OpenCL Посчитать массив с помощью OpenCl https://www.cyberforum.ru/ opencl/ thread3120381.html
Нужно посчитать массив a+b с помощью OpenCL на видеокарте. Программу я написал стандартно, но не могу понять как для расчетов подключить OpenCL. #include <CL/cl.hpp> #include <cstdlib> #include <iostream> #include <time.h> using namespace std; int main() { int num;
Операционная система, которая актуальна в России для установки ПО для многопараллельных вычислений OpenCL
Или можно любую? Но мне сдаётся что закрытые драйвера так просто никто не выложит. ПК полностью AMD видео встраено в процессор Razen 7 5800 , вроде как к Vevo 10 относится. Не уверен что у меня с ubuntu что-то получится, закрытые драйвера, наверное это версия про, во первых дорого, во вторых политика.
OpenCL Не работает OpenCL в 32 битах Прога под Win64 работает прекрасно. Драйвер определяется как "OpenCL 3.0 CUDA 12.0.89". Под Win32 не хочет. Т.е. ни одна функция не выполняется, выдаёт исключение. К примеру, даже: cl_uint qty_platforms = 0; cl_int ret = clGetPlatformIDs(0, NULL, &qty_platforms);выдаёт исключение "Module not found", хотя 32-битный OpenCL.dll есть. Добавлено через 6 минут На всякий случай: установлен NVIDIA... https://www.cyberforum.ru/ opencl/ thread3052272.html
OpenCL Определить оптимальное количество работников Доброго времени суток. Подскажите пожалуйста, как определить оптимальное количество работников. Я определяю, как size_t workitem_size; clDevices.getInfo(CL_DEVICE_MAX_WORK_ITEM_SIZES, &workitem_size); N = workitem_size * workitem_size; но, такой подход хорошо работает на одной машине, и совершено, не годится на другой. Подскажите, как лучше сделать, чтобы запустить, ядро с максимально... https://www.cyberforum.ru/ opencl/ thread3042148.html Инициализированный локальный массив OpenCL
Можно ли как-то задать local массив с инициализированными значениями? Либо в OpenCL-программе, либо скопировать в параметр kernel-функции из основной программы? clSetKernelArg выдаёт ошибку CL_INVALID_ARG_VALUE для параметра, помеченного как __local. Инициализировать local-массив в OpenCL-программе тоже не разрешается. Есть какой-то вариант?
OpenCL Можно ли ускорить код? __kernel void LJ_Verlet_Kernel ( __global float * x , __global float * y , __global float * vx , __global float * vy , ... https://www.cyberforum.ru/ opencl/ thread3008064.html OpenCL Как сделать поддержку устройства https://www.cyberforum.ru/ opencl/ thread2949653.html
Добрый день. Скажите пожалуйста как можно сделать поддержку устройством OpenCL*? Есть устройство, которое может на своих процессорах производить вычисления, но там нет поддержки OpenCL, есть исходники его драйвера так же возможность выполнять какой-то код на этом устройстве. Как можно сделать поддержку OpenCL для этого устройства? в какую сторону копать? Спасибо.
OpenCL Скорость выполнения на CPU больше чем на OpenCl
Подскажите кто может. Есть пример программы , где вроде бы скорость выполнения на OpenCl должна быть больше , чем на CPU, но в реальности наоборот. Программа взята из статьи про OpenCl. Изменено только: kernel вместо файла записан в строку добавлено выполнение на CPU и добавлены переменные для расчета времени выполнения на одну команду clEnqueueWriteBuffer времени требуется больше, чем...
OpenCL Harbour Не нашел на форуме темы по Harbour. Интересно, почему такое отношение к этому яз
194 / 29 / 5
Регистрация: 11.04.2015
Сообщений: 726
19.04.2024, 01:10  [ТС] 0

Непредсказуемые изменения точности расчётов внутри kernel - OpenCL - Ответ 17282431

19.04.2024, 01:10. Показов 1891. Ответов 45
Метки (Все метки)

Ответ

Цитата Сообщение от snake32 Посмотреть сообщение
Можно тут по-подробнее?
Да, конечно, расскажу. Делалось это с использованием MatLab, естественно
Как строится расчёт синуса для точности float (если не CORDIC)? Через интервальные аппроксимации параболами (см. рисунок). Например, точность float (ошибка <1.0E-08) обеспечивается всего лишь ~150 интервалами (если разбиваем от 0 до pi/2), при этом, точности 1.0E-12 достигнуть не удаётся и при числе интервалов в 5000. Более того - точность не растёт при увеличении числа интервалов свыше 3000, а падает. Очевидно, что точности double таким образом достичь не удастся.
Для сходящихся функций (синус, косинус) прекрасно работает ряд Тейлора. Точно так же делим участок [0, pi/2] на N интервалов и раскладываем функцию синуса в ряд Тейлора в точке центра каждого интервала, после чего записываем коэффициенты получившегося полинома (с заранее заданной степенью i[SUB]max[/SUB]) в таблицу:
N k0 (*x0) ki (*xi) kimax (*ximax)
0 2.361868486512384E-02 ... 1.651448768486486E-07
1 ... ... ...
Мне удалось добиться ошибки в <3.0E-16 (по данным MatLab) на 125 интервалах с полиномом 6 степени.
Отдельно стоит сказать о том, как я нахожу в таблице нужные коэффициенты полинома. Поскольку участок равномерно разбит на N интервалов, можно использовать простую линейную функцию вида y = k*x, где y - номер интервала, а x - аргумент функции sin(x). Отмечу, однако, что мой "бенчмарк" C++ сказал мне, что "MatLab не прав", и выдал максимальную ошибку в 1.2E-14, что, в целом, меня устроило.
С тангенсом я не стал разбираться и бахнул tan(x) = sin(x) / cos(x). Дорого, но я использую эту функцию довольно редко.
Функции же арксинуса и арккосинуса расходятся, поэтому Тейлор тут мдееееее.. Да тут, как оказалось, что угодно будет мдееееее. Оказывается, арк-функции вычисляют через арктангенс, который сходится по формулам, использующим корень. Но разложить функцию арктангенса через ряд Тейлора, как я понял, невозможно, поэтому пользуются другими "аппроксиматорами". Я решил использовать аппроксимацию Паде: степень полинома числителя - 3, знаменателя - 5, число интервалов - 159. Эта функцию определена для любого x, кроме inf и NaN (нужно для inf - бахайте туда x=квинтиллион). Порядок точности получился тем же, что и для синуса с косинусом. Оговорки есть только с интервальным разбиением - здесь не одно равномерное разбиение, а три (x: 0-10, 10-20, 20-40) и пять определённых вручную "широких" интервалов, неравномерно уходящих в "бесконечность".
Ссылок нет, поскольку когда я это всё делал, большей теорией, чем та, что я сейчас написал, я не обладал. Неделя экспериментов, и программная реализация тригонометрии для double готова. В шейдеры, кстати, я загружал таблицы через SSBO; хотел захардкодить, но компилятор оПтИмИзИрУеТ константы, если они кажется ему слишком большими. Ох уж эти 10 Кб информации. Спасибо, умный компилятор.

Не по теме:

Кстати я также реализовал CORDIC для double в шейдерах (только для синуса). Работало это чудо в 11 (ужасть) раз медленнее, чем моя "табличная" тригонометрия. Я не ожидал, что операции смещения битов в целых числах дороже, чем возведения в степень, умножения и сложения.


Цитата Сообщение от snake32 Посмотреть сообщение
да вроде сводится к нахождению прямой-пересечения двух плоскостей
Да, но так мы найдём две точки, а точкой пересечения является лишь одна из них (это ж дуги). Нужна проверка. Проверка простая - найти 6 дистанций и сравнить их попарно. Именно здесь моя коса находит себе камень - какая-то дистанция оказывается точной лишь до 3 знака и руинит проверку.

Вернуться к обсуждению:
Непредсказуемые изменения точности расчётов внутри kernel OpenCL
Миниатюры
Непредсказуемые изменения точности расчётов внутри kernel  
1
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Блог
19.04.2024, 01:10
Готовые ответы и решения:

Повышение точности расчетов
Здрям! Подскажите, пожалуйста, как заставить эту заразу, во-первых, воспринимать отрицательные...

Повышение точности расчетов в Matlab
Повышение точности расчетов в Matlab : http://www.advanpix.com/ Бесплатный Toolbox Приведу...

Уменьшение точности расчетов (округление)
Доброго времени суток. Есть пример x=3/5000=0,0006 Нужно чтобы ответ был 0. Именно ответ, а не...

Преобразовать функцию для повышения точности расчетов
Есть функция f = sqrt(1 + x) - 1. Для x, близких к нулю (порядка 10 в -15 степени) не хватает...

Построить график изменения вероятности нахождения в состояниях со временем (по результатам расчетов)
Здравствуйте, помогите пожалуйста доработать программу по заданию. Нужно доделать граф...

45
19.04.2024, 01:10
cpp_developer
Эксперт
20123 / 5690 / 417
Регистрация: 09.04.2010
Сообщений: 12,546
Блог
19.04.2024, 01:10
Помогаю со студенческими работами здесь

Электротехника: График изменения тока протекающего через конденсатор на переменном E. Из расчетов переходных процессов
Добрый вечер, подскажите пожалуйста как в маткаде построить графики: Где &quot;71,565&quot; и &quot;108,435&quot; в...

Непредсказуемые синие экраны
Здравствуйте. Уже на протяжении года меня преследуют эти ошибки, но проявляются они абсолютно в...

Stripos - непредсказуемые результаты
Получаю значения фун-ей stripos и далее использую его в фун-и substr_replace. Все замечательно...

Изменения внутри Combobox
Необходимо реализовать следующее: в combobox 5 полей, при изменении какого-либо, измененное...

Изменения внутри файла стилей средствами JS
Доброго времени суток! Подскажите пожалуйста, как можно внести изменения в CSS-файл для...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru