Skip to content

Commit

Permalink
added task07
Browse files Browse the repository at this point in the history
  • Loading branch information
simiyutin committed Oct 22, 2023
1 parent fbba6ee commit 2cbf150
Show file tree
Hide file tree
Showing 8 changed files with 25 additions and 121 deletions.
8 changes: 2 additions & 6 deletions .github/workflows/cmake.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,10 +28,6 @@ jobs:
- name: Build
run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}}

- name: bitonic
- name: radix
working-directory: ${{github.workspace}}/build
run: ./bitonic

- name: prefix_sum
working-directory: ${{github.workspace}}/build
run: ./prefix_sum
run: ./radix
10 changes: 3 additions & 7 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,6 @@ endif()
# Она считывает все байты из файла src/cl/aplusb.cl (т.е. весь исходный код кернела) и преобразует их в массив байтов в файле src/cl/aplusb_cl.h aplusb_kernel
# Обратите внимание что это происходит на этапе компиляции, кроме того необходимо чтобы файл src/cl/aplusb_cl.h был перечислен среди исходников для компиляции при вызове add_executable

convertIntoHeader(src/cl/bitonic.cl src/cl/bitonic_cl.h bitonic_kernel)
add_executable(bitonic src/main_bitonic.cpp src/cl/bitonic_cl.h)
target_link_libraries(bitonic libclew libgpu libutils)

convertIntoHeader(src/cl/prefix_sum.cl src/cl/prefix_sum_cl.h prefix_sum_kernel)
add_executable(prefix_sum src/main_prefix_sum.cpp src/cl/prefix_sum_cl.h)
target_link_libraries(prefix_sum libclew libgpu libutils)
convertIntoHeader(src/cl/radix.cl src/cl/radix_cl.h radix_kernel)
add_executable(radix src/main_radix.cpp src/cl/radix_cl.h)
target_link_libraries(radix libclew libgpu libutils)
24 changes: 10 additions & 14 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,26 +2,22 @@

[Остальные задания](https://github.com/GPGPUCourse/GPGPUTasks2023/).

# Задание 6. Bitonic sort, prefix sum
# Задание 7. Radix sort

[![Build Status](https://github.com/GPGPUCourse/GPGPUTasks2023/actions/workflows/cmake.yml/badge.svg?branch=task06&event=push)](https://github.com/GPGPUCourse/GPGPUTasks2023/actions/workflows/cmake.yml)
[![Build Status](https://github.com/GPGPUCourse/GPGPUTasks2023/actions/workflows/cmake.yml/badge.svg?branch=task07&event=push)](https://github.com/GPGPUCourse/GPGPUTasks2023/actions/workflows/cmake.yml)

0. Сделать fork проекта
1. Выполнить задания 6.1, 6.2
2. Отправить **Pull-request** с названием ```Task06 <Имя> <Фамилия> <Аффиляция>``` (указав вывод каждой программы при исполнении на вашем компьютере - в тройных кавычках для сохранения форматирования)
1. Выполнить задание 7.1
2. Отправить **Pull-request** с названием ```Task07 <Имя> <Фамилия> <Аффиляция>``` (указав вывод каждой программы при исполнении на вашем компьютере - в тройных кавычках для сохранения форматирования)

**Дедлайн**: 23:59 22 октября.
**Дедлайн**: 23:59 29 октября.

Задание 6.1. Bitonic sort
=========

Реализуйте bitonic sort для вещественных чисел

Файлы: ```src/main_bitonic.cpp``` и ```src/cl/bitonic.cl```

Задание 6.2. Prefix sum
Задание 7.1. Radix sort
=========

Реализуйте prefix sum в модели массового параллелизма
Реализуйте radix sort для unsigned int (используя локальную память).

Не влияет на баллы, но вероятно, что будет интересно сравнить новую сортировку с остальными по скорости. В случае, если вы используете линейный алгоритм для префиксной суммы, то radix sort тоже становится линейным и должен обгонять merge и bitonic sort начиная с какого-то размера массива.

Файлы: ```src/main_prefix_sum.cpp``` и ```src/cl/prefix_sum.cl```
Файлы: ```src/main_radix.cpp``` и ```src/cl/radix.cl```
3 changes: 0 additions & 3 deletions src/cl/bitonic.cl

This file was deleted.

1 change: 0 additions & 1 deletion src/cl/prefix_sum.cl

This file was deleted.

3 changes: 3 additions & 0 deletions src/cl/radix.cl
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
__kernel void radix(__global unsigned int *as) {
// TODO
}
83 changes: 0 additions & 83 deletions src/main_prefix_sum.cpp

This file was deleted.

14 changes: 7 additions & 7 deletions src/main_bitonic.cpp → src/main_radix.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
#include <libutils/timer.h>

// Этот файл будет сгенерирован автоматически в момент сборки - см. convertIntoHeader в CMakeLists.txt:18
#include "cl/bitonic_cl.h"
#include "cl/radix_cl.h"

#include <iostream>
#include <stdexcept>
Expand All @@ -32,14 +32,14 @@ int main(int argc, char **argv) {

int benchmarkingIters = 10;
unsigned int n = 32 * 1024 * 1024;
std::vector<float> as(n, 0);
std::vector<unsigned int> as(n, 0);
FastRandom r(n);
for (unsigned int i = 0; i < n; ++i) {
as[i] = r.nextf();
as[i] = (unsigned int) r.next(0, std::numeric_limits<int>::max());
}
std::cout << "Data generated for n=" << n << "!" << std::endl;

std::vector<float> cpu_sorted;
std::vector<unsigned int> cpu_sorted;
{
timer t;
for (int iter = 0; iter < benchmarkingIters; ++iter) {
Expand All @@ -51,12 +51,12 @@ int main(int argc, char **argv) {
std::cout << "CPU: " << (n / 1000 / 1000) / t.lapAvg() << " millions/s" << std::endl;
}
/*
gpu::gpu_mem_32f as_gpu;
gpu::gpu_mem_32u as_gpu;
as_gpu.resizeN(n);
{
ocl::Kernel bitonic(bitonic_kernel, bitonic_kernel_length, "bitonic");
bitonic.compile();
ocl::Kernel radix(radix_kernel, radix_kernel_length, "radix");
radix.compile();
timer t;
for (int iter = 0; iter < benchmarkingIters; ++iter) {
Expand Down

0 comments on commit 2cbf150

Please sign in to comment.