/
vuron
/
adept
Обзор
Документация
Войти
/
vuron
/
adept
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
src/backends/gpu/vulkan/vulkan_backend_init.cpp
87 строк
4 KB
kolkir
Multidevice test utils
06 апр 2025, 19:28
06 апр 2025, 19:28
06a1d99
Код
Авторство
О чём код?
#include <adept/backends/gpu/vulkan/manager.hpp> #include <adept/dispatch/dispatcher.hpp> #include "../../../init_order.hpp" namespace adept { __attribute__((__constructor__(BACKEND_INIT_ORDER))) void vulkan_init(void) { Dispatcher::instance().register_backend(device_t::GPU, backend_t::Vulkan); // tensor creation Dispatcher::instance().add_func("make_empty_tensor", {device_t::GPU, backend_t::Vulkan}, gpu::vulkan::make_empty_tensor); Dispatcher::instance().add_func("make_tensor_from_blob", {device_t::GPU, backend_t::Vulkan}, gpu::vulkan::make_tensor_from_blob); Dispatcher::instance().add_func("clone_tensor", {device_t::GPU, backend_t::Vulkan}, gpu::vulkan::clone_tensor); // Dispatcher::instance().add_func("stack_tensors", {device_t::CPU, backend_t::SIMD}, // cpu::stack_tensors); // tensor creation end // // init // Dispatcher::instance().add_func("fill_zero_tensor", {device_t::CPU, backend_t::SIMD}, // cpu::fill_zero_tensor); // Dispatcher::instance().add_func("fill_tensor", {device_t::CPU, backend_t::SIMD}, // cpu::fill_tensor); // Dispatcher::instance().add_func("fill_uniform_tensor", {device_t::CPU, backend_t::SIMD}, // cpu::fill_uniform_tensor); // Dispatcher::instance().add_func("fill_normal_tensor", {device_t::CPU, backend_t::SIMD}, // cpu::fill_normal_tensor); // // init end // // losses // Dispatcher::instance().add_func("log_softmax_last_dim_fwd", {device_t::CPU, backend_t::SIMD}, // cpu::log_softmax_last_dim_fwd); // Dispatcher::instance().add_func("log_softmax_last_dim_bwd", {device_t::CPU, backend_t::SIMD}, // cpu::log_softmax_last_dim_bwd); // Dispatcher::instance().add_func("nll_loss_fwd", {device_t::CPU, backend_t::SIMD}, // cpu::nll_loss_fwd); // Dispatcher::instance().add_func("nll_loss_bwd", {device_t::CPU, backend_t::SIMD}, // cpu::nll_loss_bwd); // // losses end // // conv // Dispatcher::instance().add_func("conv2d_fwd", {device_t::CPU, backend_t::SIMD}, // cpu::conv2d_fwd); Dispatcher::instance().add_func("conv2d_bwd", {device_t::CPU, // backend_t::SIMD}, cpu::conv2d_bwd); // // conv end // // pool // Dispatcher::instance().add_func("avg_pool2d_fwd", {device_t::CPU, backend_t::SIMD}, // cpu::avg_pool2d_fwd); // Dispatcher::instance().add_func("avg_pool2d_bwd", {device_t::CPU, backend_t::SIMD}, // cpu::avg_pool2d_bwd); // Dispatcher::instance().add_func("max_pool2d_fwd", {device_t::CPU, backend_t::SIMD}, // cpu::max_pool2d_fwd); // Dispatcher::instance().add_func("max_pool2d_bwd", {device_t::CPU, backend_t::SIMD}, // cpu::max_pool2d_bwd); // // pool end // // norms // Dispatcher::instance().add_func("batchnorm2d_fwd", {device_t::CPU, backend_t::SIMD}, // cpu::batchnorm2d_fwd); // Dispatcher::instance().add_func("batchnorm2d_bwd", {device_t::CPU, backend_t::SIMD}, // cpu::batchnorm2d_bwd); // // norms end // // activations // Dispatcher::instance().add_func("relu_fwd", {device_t::CPU, backend_t::SIMD}, cpu::relu_fwd); // Dispatcher::instance().add_func("relu_bwd", {device_t::CPU, backend_t::SIMD}, cpu::relu_bwd); // Dispatcher::instance().add_func("leaky_relu_fwd", {device_t::CPU, backend_t::SIMD}, // cpu::leaky_relu_fwd); // Dispatcher::instance().add_func("leaky_relu_bwd", {device_t::CPU, backend_t::SIMD}, // cpu::leaky_relu_bwd); // Dispatcher::instance().add_func("sigmoid_fwd", {device_t::CPU, backend_t::SIMD}, // cpu::sigmoid_fwd); // Dispatcher::instance().add_func("sigmoid_bwd", {device_t::CPU, backend_t::SIMD}, // cpu::sigmoid_bwd); // Dispatcher::instance().add_func("silu_fwd", {device_t::CPU, backend_t::SIMD}, cpu::silu_fwd); // Dispatcher::instance().add_func("silu_bwd", {device_t::CPU, backend_t::SIMD}, cpu::silu_bwd); // // activations end } } // namespace adept