diff --git a/CHANGELOG.md b/CHANGELOG.md index 64b67cf5..3566bd58 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,62 @@ # Changelog -## [v0.7.0](https://github.com/KomputeProject/kompute/tree/v0.7.0) +## [v0.8.0](https://github.com/KomputeProject/kompute/tree/v0.8.0) + +[Full Changelog](https://github.com/KomputeProject/kompute/compare/v0.7.0...v0.8.0) + +**Closed issues:** + +- Extend utils shader helpers in test for windows [\#240](https://github.com/KomputeProject/kompute/issues/240) +- Python segfaults after import kp [\#230](https://github.com/KomputeProject/kompute/issues/230) +- Simple and extended python examples do not work \(v 0.7.0\) [\#228](https://github.com/KomputeProject/kompute/issues/228) +- Python macOS issue \(ImportError: dlopen\(...\): no suitable image found. Did find: ...: mach-o, but wrong architecture\) [\#223](https://github.com/KomputeProject/kompute/issues/223) +- Python macOS issue \(Symbol not found: \_\_PyThreadState\_Current ... Expected in: flat namespace\) [\#221](https://github.com/KomputeProject/kompute/issues/221) +- Finalise Migration of Kompute into Linux Foundation [\#216](https://github.com/KomputeProject/kompute/issues/216) +- CMake Error: Imported target "kompute::kompute" includes non-existent path "/usr/local/single\_include" [\#212](https://github.com/KomputeProject/kompute/issues/212) +- Incompatibality inroduced with \#168 on Vulkan 1.1.x [\#209](https://github.com/KomputeProject/kompute/issues/209) +- external libraries [\#201](https://github.com/KomputeProject/kompute/issues/201) +- Starting slack group or discord for alternative / faster version of asking questions [\#198](https://github.com/KomputeProject/kompute/issues/198) +- Test SingleSequenceRecord is not thread safe and fails in AMD card [\#196](https://github.com/KomputeProject/kompute/issues/196) +- Update Kompute headers to reference the glslang headers for install vs build interfaces [\#193](https://github.com/KomputeProject/kompute/issues/193) +- Integrate with GLSLang find\_package file when issue is resolved in the glslang repo [\#191](https://github.com/KomputeProject/kompute/issues/191) +- Release 0.7.0 [\#187](https://github.com/KomputeProject/kompute/issues/187) +- Get number of available devices [\#185](https://github.com/KomputeProject/kompute/issues/185) +- Deep Learning Convolutional Neural Network \(CNN\) example implementation [\#162](https://github.com/KomputeProject/kompute/issues/162) +- Create example compiling and running in raspberry pi with Mesa Vulkan drivers [\#131](https://github.com/KomputeProject/kompute/issues/131) +- Add support for VK\_EXT\_debug\_utils labels [\#110](https://github.com/KomputeProject/kompute/issues/110) + +**Merged pull requests:** + +- Adding support for different types for spec and push consts [\#242](https://github.com/KomputeProject/kompute/pull/242) ([axsaucedo](https://github.com/axsaucedo)) +- Extend shader helper functions in tests to support windows [\#241](https://github.com/KomputeProject/kompute/pull/241) ([axsaucedo](https://github.com/axsaucedo)) +- Increase test cov across codebase [\#239](https://github.com/KomputeProject/kompute/pull/239) ([axsaucedo](https://github.com/axsaucedo)) +- Updated collab link for C++ notebook [\#237](https://github.com/KomputeProject/kompute/pull/237) ([axsaucedo](https://github.com/axsaucedo)) +- Updating repo licenses and links [\#236](https://github.com/KomputeProject/kompute/pull/236) ([axsaucedo](https://github.com/axsaucedo)) +- Removing GLSLang as core dependency [\#235](https://github.com/KomputeProject/kompute/pull/235) ([axsaucedo](https://github.com/axsaucedo)) +- Naive matrice multiplication example [\#233](https://github.com/KomputeProject/kompute/pull/233) ([Corentin-pro](https://github.com/Corentin-pro)) +- Fixed typo in CMakeLists.txt \(ANDOID =\> ANDROID\) [\#232](https://github.com/KomputeProject/kompute/pull/232) ([Corentin-pro](https://github.com/Corentin-pro)) +- Set kp\_debug, kp\_info, kp\_warning and kp\_error to py::none\(\) when the program terminates. [\#231](https://github.com/KomputeProject/kompute/pull/231) ([thinking-tower](https://github.com/thinking-tower)) +- VGG7 Python example [\#227](https://github.com/KomputeProject/kompute/pull/227) ([20kdc](https://github.com/20kdc)) +- Add documentation for CMake flags [\#224](https://github.com/KomputeProject/kompute/pull/224) ([thinking-tower](https://github.com/thinking-tower)) +- Set PYTHON\_INCLUDE\_DIR and PYTHON\_LIBRARY during installation [\#222](https://github.com/KomputeProject/kompute/pull/222) ([thinking-tower](https://github.com/thinking-tower)) +- Removing xxd.exe binary and add instructions to build [\#220](https://github.com/KomputeProject/kompute/pull/220) ([axsaucedo](https://github.com/axsaucedo)) +- \[PYTHON\] Ensure numpy array increments refcount of tensor to keep valid [\#219](https://github.com/KomputeProject/kompute/pull/219) ([axsaucedo](https://github.com/axsaucedo)) +- Added destroy for manager [\#218](https://github.com/KomputeProject/kompute/pull/218) ([axsaucedo](https://github.com/axsaucedo)) +- Revert "Fixed the issue that caused CMake to look for non-existent path after being installed" [\#217](https://github.com/KomputeProject/kompute/pull/217) ([axsaucedo](https://github.com/axsaucedo)) +- Fixed the issue that caused CMake to look for non-existent path after being installed [\#213](https://github.com/KomputeProject/kompute/pull/213) ([unexploredtest](https://github.com/unexploredtest)) +- omitted .data\(\) because it is incompatible with vulkan 1.1.x [\#211](https://github.com/KomputeProject/kompute/pull/211) ([unexploredtest](https://github.com/unexploredtest)) +- vkEnumeratePhysicalDevices\(\*\(this-\>mInstance\) ... doesn't work on Linux i386 [\#208](https://github.com/KomputeProject/kompute/pull/208) ([unexploredtest](https://github.com/unexploredtest)) +- Raises an error when having no/exceeding vulkan device's limit [\#207](https://github.com/KomputeProject/kompute/pull/207) ([unexploredtest](https://github.com/unexploredtest)) +- Updated README and fixed a syntax error on C++'s example [\#206](https://github.com/KomputeProject/kompute/pull/206) ([unexploredtest](https://github.com/unexploredtest)) +- removed the extra comma after KOMPUTE\_OPT\_REPO\_SUBMODULE\_BUILD [\#205](https://github.com/KomputeProject/kompute/pull/205) ([unexploredtest](https://github.com/unexploredtest)) +- Extending list\_devices test for multiple devices [\#204](https://github.com/KomputeProject/kompute/pull/204) ([axsaucedo](https://github.com/axsaucedo)) +- Fix \#include \ [\#200](https://github.com/KomputeProject/kompute/pull/200) ([unexploredtest](https://github.com/unexploredtest)) +- Added memory barrier on test [\#199](https://github.com/KomputeProject/kompute/pull/199) ([axsaucedo](https://github.com/axsaucedo)) +- Add function to list physical devices [\#195](https://github.com/KomputeProject/kompute/pull/195) ([axsaucedo](https://github.com/axsaucedo)) +- v0.7.0 release [\#189](https://github.com/KomputeProject/kompute/pull/189) ([axsaucedo](https://github.com/axsaucedo)) +- Add instructions for running on Pi4 [\#180](https://github.com/KomputeProject/kompute/pull/180) ([hpgmiskin](https://github.com/hpgmiskin)) + +## [v0.7.0](https://github.com/KomputeProject/kompute/tree/v0.7.0) (2021-03-14) [Full Changelog](https://github.com/KomputeProject/kompute/compare/v0.6.0...v0.7.0) @@ -33,8 +89,9 @@ **Closed issues:** +- Add ability to specify whether to build shared or static dependencies as well as option for Kompute lib [\#190](https://github.com/KomputeProject/kompute/issues/190) - Update memory barriers to align with tensor staging/primary memory revamp [\#181](https://github.com/KomputeProject/kompute/issues/181) -- Move shader defaultResource inside kp_test_utils::Shader class [\#175](https://github.com/KomputeProject/kompute/issues/175) +- Move shader defaultResource inside kp::Shader class [\#175](https://github.com/KomputeProject/kompute/issues/175) - Reach at least 90% code coverage on tests [\#170](https://github.com/KomputeProject/kompute/issues/170) - Add functionality to re-record sequence as now it's possible to update the underlying algorithm [\#169](https://github.com/KomputeProject/kompute/issues/169) - Use numpy arrays as default return value [\#166](https://github.com/KomputeProject/kompute/issues/166) @@ -60,9 +117,9 @@ - Too many warnings [\#183](https://github.com/KomputeProject/kompute/pull/183) ([alexander-g](https://github.com/alexander-g)) - Add support for bool, double, int32, uint32 and float32 on Tensors via TensorT [\#177](https://github.com/KomputeProject/kompute/pull/177) ([axsaucedo](https://github.com/axsaucedo)) - Support for Timestamping [\#176](https://github.com/KomputeProject/kompute/pull/176) ([alexander-g](https://github.com/alexander-g)) -- Test for ShaderResources [\#165](https://github.com/KomputeProject/kompute/pull/165) ([aliPMPAINT](https://github.com/aliPMPAINT)) +- Test for ShaderResources [\#165](https://github.com/KomputeProject/kompute/pull/165) ([unexploredtest](https://github.com/unexploredtest)) - Amend memory hierarchy to enable for push constants and functional interface for more flexible operations [\#164](https://github.com/KomputeProject/kompute/pull/164) ([axsaucedo](https://github.com/axsaucedo)) -- made changes for include paths for complete installation [\#163](https://github.com/KomputeProject/kompute/pull/163) ([aliPMPAINT](https://github.com/aliPMPAINT)) +- made changes for include paths for complete installation [\#163](https://github.com/KomputeProject/kompute/pull/163) ([unexploredtest](https://github.com/unexploredtest)) - Added dark mode on docs [\#157](https://github.com/KomputeProject/kompute/pull/157) ([axsaucedo](https://github.com/axsaucedo)) - Glslang implementation for online shader compilation [\#154](https://github.com/KomputeProject/kompute/pull/154) ([axsaucedo](https://github.com/axsaucedo)) - Adding test code coverage using gcov and lcov [\#149](https://github.com/KomputeProject/kompute/pull/149) ([axsaucedo](https://github.com/axsaucedo)) @@ -107,8 +164,8 @@ - 122 remove spdlog references in python [\#123](https://github.com/KomputeProject/kompute/pull/123) ([axsaucedo](https://github.com/axsaucedo)) - Native logging for Python [\#118](https://github.com/KomputeProject/kompute/pull/118) ([alexander-g](https://github.com/alexander-g)) -- Fixes for the c++ Simple and Extended examples in readme [\#108](https://github.com/KomputeProject/kompute/pull/108) ([aliPMPAINT](https://github.com/aliPMPAINT)) -- Fix building shaders on native linux [\#102](https://github.com/KomputeProject/kompute/pull/102) ([aliPMPAINT](https://github.com/aliPMPAINT)) +- Fixes for the c++ Simple and Extended examples in readme [\#108](https://github.com/KomputeProject/kompute/pull/108) ([unexploredtest](https://github.com/unexploredtest)) +- Fix building shaders on native linux [\#102](https://github.com/KomputeProject/kompute/pull/102) ([unexploredtest](https://github.com/unexploredtest)) ## [v0.5.1](https://github.com/KomputeProject/kompute/tree/v0.5.1) (2020-11-12) @@ -119,6 +176,7 @@ - Remove the template params from OpAlgoBase for dispatch layout [\#57](https://github.com/KomputeProject/kompute/issues/57) - Enable layout to be configured dynamically within shaders [\#26](https://github.com/KomputeProject/kompute/issues/26) - replaced "static unsigned const" to "static const unsigned" to avoid SWIG parsing error. [\#95](https://github.com/KomputeProject/kompute/pull/95) ([0x0f0f0f](https://github.com/0x0f0f0f)) +- codespell spelling fixes [\#80](https://github.com/KomputeProject/kompute/pull/80) ([pH5](https://github.com/pH5)) **Closed issues:** @@ -154,7 +212,6 @@ - Upgrade build to support VulkanHPP 1.2.154 \< 1.2.158 [\#82](https://github.com/KomputeProject/kompute/issues/82) - Add Android example for Kompute [\#23](https://github.com/KomputeProject/kompute/issues/23) - Fix compatibility for Vulkan HPP 1.2.155 and above [\#83](https://github.com/KomputeProject/kompute/pull/83) ([axsaucedo](https://github.com/axsaucedo)) -- codespell spelling fixes [\#80](https://github.com/KomputeProject/kompute/pull/80) ([pH5](https://github.com/pH5)) **Closed issues:** diff --git a/CMakeLists.txt b/CMakeLists.txt index f7022b3c..0e535ed2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,7 +1,7 @@ # SPDX-License-Identifier: Apache-2.0 cmake_minimum_required(VERSION 3.4.1) -project(kompute VERSION 0.7.0) +project(kompute VERSION 0.8.0) set(CMAKE_CXX_STANDARD 14) diff --git a/VERSION b/VERSION index faef31a4..a3df0a69 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.7.0 +0.8.0 diff --git a/docs/conf.py b/docs/conf.py index 029ae00c..2cc81b1e 100755 --- a/docs/conf.py +++ b/docs/conf.py @@ -27,7 +27,7 @@ author = 'Alejandro Saucedo' # The full version, including alpha/beta/rc tags -release = '0.7.0' +release = '0.8.0' # -- General configuration --------------------------------------------------- diff --git a/docs/index.rst b/docs/index.rst index f3358a00..b7c80404 100755 --- a/docs/index.rst +++ b/docs/index.rst @@ -33,9 +33,19 @@ Documentation Index (as per sidebar) :caption: Python Documentation: Python Package Overview - Python Examples Python Class Documentation & Reference +.. toctree:: + :titlesonly: + :caption: Examples: + + Python Examples + C++ Examples + Android Mobile App Integration + Game Engine Godot Integration + Example Benchmark with Matrix Multiplication + Convolutional Neural Network (CNN) Simple Upscale + .. toctree:: :titlesonly: :caption: Advanced Concepts & Deep Dives: @@ -43,7 +53,5 @@ Documentation Index (as per sidebar) CI, Docker Images Docs & Tests Variable Types for Tensors, and Push/Spec Constants Asynchronous & Parallel Operations - Mobile App Integration (Android) - Game Engine Integration (Godot Engine) Code Index diff --git a/docs/overview/convolutional-net.rst b/docs/overview/convolutional-net.rst new file mode 100644 index 00000000..aed1673d --- /dev/null +++ b/docs/overview/convolutional-net.rst @@ -0,0 +1,3 @@ + +.. mdinclude:: ../../examples/neural_network_vgg7/README.md + diff --git a/docs/overview/matmul-benchmark.rst b/docs/overview/matmul-benchmark.rst new file mode 100644 index 00000000..5dfe2571 --- /dev/null +++ b/docs/overview/matmul-benchmark.rst @@ -0,0 +1,14 @@ + +.. mdinclude:: ../../examples/python_naive_matmul/README.md + + +Implementation Overview +--------- + +The benchmark can be found in the `benchmark.py` file in the repo, which is outlined below. This file runs a naive implementation of the three matrix multiplication implementations to evaluate the performance of each. + + +.. literalinclude:: ../../examples/python_naive_matmul/benchmark.py + :language: python + + diff --git a/docs/overview/raspberry-pi.rst b/docs/overview/raspberry-pi.rst new file mode 100644 index 00000000..cd28bccb --- /dev/null +++ b/docs/overview/raspberry-pi.rst @@ -0,0 +1,3 @@ + +.. mdinclude:: ../../examples/pi4_mesa_build/README.md + diff --git a/examples/neural_network_vgg7/.gitignore b/examples/neural_network_vgg7/.gitignore index 71319ea0..999940f7 100644 --- a/examples/neural_network_vgg7/.gitignore +++ b/examples/neural_network_vgg7/.gitignore @@ -1,3 +1,2 @@ model-kipper model.json -out.png diff --git a/examples/neural_network_vgg7/README.md b/examples/neural_network_vgg7/README.md index 3e6b06df..cbf9635c 100644 --- a/examples/neural_network_vgg7/README.md +++ b/examples/neural_network_vgg7/README.md @@ -1,6 +1,17 @@ -# Waifu2x VGG7 implementation +# Convolutional Neural Network (CNN) VGG7 implementation -This demonstrates performing image upscaling using Python and kompute. +This example provides an implementation of a convolutional neural network (CNN) that enables for image resolution upscaling, which means that images can improve their quality through purely the machine learning implementation. + +This example demonstrates performing image upscaling using Kompute on the test image below. + +In this example we will be doing the following: + +* Import pre-trained model +* Create Kompute code that loads model weights +* Create Kompute shader that performs inference on image +* Run model against image to perform upscale + +## Import pre-trained model To import the no-noise-compensation VGG7 model (into `model-kipper`): @@ -11,7 +22,28 @@ python3 import_vgg7.py model.json Other models from the vgg\_7 set (such as `https://raw.githubusercontent.com/nagadomi/waifu2x/master/models/vgg_7/photo/noise0_model.json`) can be subsituted as desired. -To execute that model (no tiling is performed, so be careful about image sizes): +## Create code that loads model weights + +We implement the kompute logic under run_vgg7 that loads the model weights and coordinates the execution of the inference. + +## Create Kompute shader that performs inference on image + +Similarly, we created a compute shader that performs an inference iteration on an image provided to perfrom upscaling. + +## Run model against image to perfrom upscale + +We now execute model against an image created by us to show how upscaling works. The image used will be the one below: + +![](https://raw.githubusercontent.com/KomputeProject/kompute/master/examples/neural_network_vgg7/w2wbinit.png) + +To execute that model no tiling is performed, so be careful about image sizes. + +We can now run the command below to perform inference against the image blow. `python3 run_vgg7.py w2wbinit.png out.png` +This would successfully upscale the resolution using the machine learning model, and the result is below: + +![](https://raw.githubusercontent.com/KomputeProject/kompute/master/examples/neural_network_vgg7/out.png) + + diff --git a/examples/neural_network_vgg7/out.png b/examples/neural_network_vgg7/out.png new file mode 100644 index 00000000..ffb718ee Binary files /dev/null and b/examples/neural_network_vgg7/out.png differ diff --git a/setup.py b/setup.py index 2e23e506..c92ef185 100644 --- a/setup.py +++ b/setup.py @@ -74,7 +74,7 @@ def build_extension(self, ext): setup( name='kp', - version='0.7.0', + version='0.8.0', author='Alejandro Saucedo', description='Kompute: Blazing fast, mobile-enabled, asynchronous, and optimized for advanced GPU processing usecases.', long_description=long_description, diff --git a/vcpkg.json.opt b/vcpkg.json.opt index e2db7523..c2109e55 100644 --- a/vcpkg.json.opt +++ b/vcpkg.json.opt @@ -1,6 +1,6 @@ { "name": "example", - "version-string": "0.7.0", + "version-string": "0.8.0", "dependencies": [ "fmt", "spdlog",