A fast linear algebra, computer vision, and mathematic library, based on CUDA and CPU multi-threading
- Linear Algebra (Including matrix multiplication, transposing, scanning(i.e. prefix sum), dot product, and so on)
- Digital signal processing (Including fast Fourier transformation applied on 1D and 2D array, frequency domain filters, and so on)
- Computer vision (Including Edge detectors, color space transformation, filters, and so on)
- Neural Network components (Including convolution on the multi-channel array, executing functions including sigmoid(developing))
- Windows 7 or later, x86, 64bit.
- Linux, x86, 64bit.
- Android on ARM64 CPUs.
- Added typedef const de::Vector& de::InputVector; The same as other major data types. The input should be const as possible.
- Exported functions (under namespace de::), should have a sub namespace labled as the modules belonging to. E.g., de::blas::cpu::GEMM(...).
- All the service functions defined in common folder, should only be labled under namespace decx::.
- All the kernel functions defined in common folder, should be labled as decx::CPUK(GPUK)::.
- Any global symbol should be named with g_ prefix.
- Nvidia CUDA toolkit with proper version.
- CMake v3.23 or later if using CMake.
- SDL2 and SDL_image.
- NDK, if building for Android ARM64 platform.
Clone this repository, open DECX_world.sln with VS. The version of VS should be 2019 or higher. In the window of VS project, right click on the solution, click build solution.
Temporary unavailable due to the chnage of buid system recently, will soon be online.
Clone the project, enter the root path of the project.
- cd to ${project_path}/build_system/Linux/
- Make the necessary scripts executable.
sudo chmod u+x ./build_configs.sh sudo chmod u+x ./build.sh
-
source ./build_configs.sh
- Configure the necessary variables.
- Set the targeted host architecture to x86
host_arch x86[x86_64][x86-64]
- Set module to build.
set_module core_CPU
- Check the configured items
list_configs
- Clean the configurations of the selected module.
clean
- Configure the selected module.
conf
- Call function to make
mk
(Note: If terminal exports "/bin/bash^M: bad interpreter: No such file or directory", please run ./fix_CRLF_cases_for_linux_script.sh or copy the command in this script if it's also unavailable. This is caused editing these scripts on Windows. The line endings LF are replaced by CRLF. So, use sed to fix it in Linux)
The setps are similar to thoes described in section 2. However, to cross compile aarch64 targets, you need to specify the architecture and toolcahin file first.
To set the architecture, run
host_arch aarch64
To set the toolchain file, run
toolchain /path/to/your/toolchain_file.cmake
More information about the new building system can be found here.
(Note: Now all the modules are migrated to the new building system, except for DECX_NN_CPU, because it has no source temporarily.)