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

Шаги редукции функции-предшественника лямбда-исчисления
Я застрял в описании в Википедии функции-предшественника в лямбда-исчислении. Википедия говорит следующее: PRED := λn.λf.λx. n (λg.λh. h (g f)) (λu.x) (λu.u) Может ли кто-нибудь объяснить процесс восстановления шаг за шагом? Спасибо.
9453 просмотров
schedule 12.12.2023

Выражение факта в логическом выражении полиномиального размера
Если у меня есть логические переменные a_1, a_2, .., a_n. Как я могу выразить тот факт, что количество логических переменных, для которых установлено значение true, больше некоторого k, используя логическое выражение полиномиального размера?...
261 просмотров

CUDA — почему параллельное сокращение на основе деформации происходит медленнее?
У меня возникла идея о параллельном сокращении на основе варпа, поскольку все потоки варпа по определению синхронизированы. Итак, идея заключалась в том, что входные данные можно уменьшить в 64 раза (каждый поток уменьшает два элемента) без...
3257 просмотров
schedule 19.05.2022

Каково использование сокращения в openmp?
У меня есть этот кусок кода, который распараллелен. int i,n; double area,pi,x; area=0.0; #pragma omp parallel for private(x) reduction (+:area) for(i=0; i<n; i++){ x= (i+0.5)/n; area+= 4.0/(1.0+x*x); } pi = area/n; Говорят, что сокращение...
3059 просмотров
schedule 18.03.2023

Есть ли хорошая реализация алгоритма редукции, вызываемого из ядра с динамическим параллелизмом?
Я вижу алгоритмы сокращения в CUDA (такие как суммирование и максимизация по диапазону элементов), обсуждавшиеся в предыдущих постах, но с динамическим параллелизмом их потенциально можно реализовать по-другому. Есть ли более эффективная реализация,...
419 просмотров
schedule 11.05.2022

Самая левая крайняя редукция (Haskell)
я получил задачу использовать самое левое внешнее сокращение для следующего выражения: f inc expo 9 (f (*2) expo 3 1) Inc определяется как: inc :: Int -> Int inc x = x+1 экспо определяется как: expo :: Int -> Int expo x =...
1611 просмотров
schedule 18.11.2023

Циклы Opencl в ядре
В блоке кода есть моя функция ядра. По сути, он вычисляет, какая точка находится дальше всего от всех кластеров, и результаты сохраняются в длинах [3] (идентификатор точки) и выводят [0] расстояние от принадлежащего кластера. Часть while делает...
154 просмотров
schedule 09.05.2023

Сокращение блоков в CUDA
Я пытаюсь сделать сокращение в CUDA, и я действительно новичок. В настоящее время я изучаю пример кода от NVIDIA. Я думаю, я действительно не уверен, как настроить размер блока и размер сетки, особенно когда мой входной массив больше ( 512 X 512...
26546 просмотров
schedule 30.10.2022

Цикл OpenMP дает другой результат для одного и того же последовательного цикла
У меня есть серийный код: double* a = malloc((1000000) * sizeof(double)); double* b = malloc((1000000) * sizeof(double)); double totalA = 0; for (int i = 0; i < 1000000; i++) { if (i == 0) { a[i] = sin(i); } b[i] =...
1559 просмотров

Приоритет оператора лямбда-исчисления и стратегии сокращения
1. В лямбда-исчислении приложения имеют более высокий приоритет, чем абстракции. Теперь в этом примере автор показывает два сокращения в нормальный и аппликативный порядок. Первый: (λx.x^2 (λx.(x+1) 2))) → (λx.x^2 (2+1)) → (λx.x^2 (3)) →...
374 просмотров
schedule 18.07.2022

управление памятью результатов CUDA Throw::minmax_element с возвращаемым типом пара device_ptr
У меня есть облако точек в памяти устройства в dPointsWS с расположением памяти, где сначала хранятся все x-, затем все y- и, наконец, все z-координаты. Я использую тягу, чтобы вычислить ограниченную рамку, выровненную по узкой оси (AABB) этого...
342 просмотров
schedule 14.01.2023

OpenMesh, децимация, Линдстрем-Тёрк
В моем приложении я работаю с большим количеством треугольных сеток, и иногда мне нужно уменьшить количество треугольников в них (свернуть некоторые ребра). Для обработки сетки я использую openmesh (openmesh.org), так как он современный (C++), но в...
1363 просмотров
schedule 16.03.2023

Как Haskell оценивает функцию Фибоначчи?
В настоящее время я смотрю на эту функцию в Haskell, которая возвращает число Фибоначчи в позиции n fib :: Integer -> Integer fib 0 = 0 fib 1 = 1 fib n = fib (n-1) + fib (n-2) Теперь он компилируется, возвращает правильный результат и...
273 просмотров
schedule 13.05.2023

CUDA — несколько параллельных сокращений иногда терпят неудачу
У меня следующая проблема. Я реализовал несколько разных алгоритмов параллельного сокращения, и все они работают правильно, если я уменьшаю только одно значение для каждого ядра. Но теперь мне нужно уменьшить несколько (21) , и я просто понятия...
795 просмотров
schedule 06.02.2023

Суммирование вложенных циклов в 2D с использованием OpenCL
Недавно я начал работать с OpenCL на C++ и пытаюсь полностью понять, как использовать 2D и 3D NDRange. В настоящее время я реализую взвешивание обратного расстояния в OpenCL, но моя проблема носит общий характер. Ниже приведена последовательная...
1003 просмотров
schedule 06.03.2022

Сведение массива CUDA к сумме элементов. Как передать ответ с устройства на хост и на печать?
Я пытаюсь уменьшить массив до суммы его элементов, используя CUDA. У меня возникли проблемы с передачей суммы, рассчитанной на устройстве, обратно на хост, чтобы ее можно было распечатать. это вывод, который я получаю: содержимое массива: 33 36...
831 просмотров
schedule 08.02.2023

Не могу понять решение (машина Тьюринга и редукция)
Нажмите здесь, чтобы увидеть мою проблему Hi. Что касается этого вопроса, я просто не могу понять его решение. Мы знаем дополнение Atm = { <M,W> : M является TM и M не принимает W} и Rtm, как описано на фото = { <M,W> : M...
211 просмотров

Разница между бета-снижением и одноступенчатым бета-снижением?
Я просмотрел множество онлайн-источников по лямбда-исчислению в поисках разницы между бета-сокращением и одношаговым бета-сокращением. Но все, что я знаю до сих пор, это то, что бета-редукция определяется как: (/x.L)M --> {M/x}L и...
144 просмотров
schedule 21.04.2023

Преобразование массива Matalab 60000x10 в 60000x1 или 1x60000
С 2D-массивом размером 60000 строк, 10 столбцов у меня есть массив следующим образом [0 0 0 0 0 1 0 0 0 0] [1 0 0 0 0 0 0 0 0 0] [0 0 0 0 0 0 0 0 0 1] ....... Любая строка будет содержать только одну «1» Я должен уменьшить это до...
110 просмотров
schedule 26.09.2022

Вложение циклов галоидной суммы
Вложенность печатных циклов для Halide::sum не эквивалентна оптимальной, как написано в учебник . Этот код предоставляет отдельные циклы для нулевой инициализации и суммирования. Halide::Func f("f"); Halide::Var x("x"); Halide::RDom r(0,...
455 просмотров
schedule 18.12.2022