Skip to content

I found a nice little performance improvement when reading the data from vector + memcpy - #473

Closed
eokeeffe wants to merge 31 commits into
KomputeProject:masterfrom
eokeeffe:master
Closed

eokeeffe wants to merge 31 commits into
KomputeProject:masterfrom
eokeeffe:master

Conversation

@eokeeffe

@eokeeffe eokeeffe commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

I'm doing up some image processing pipelines and I found a large amount of the time I was spending with reading back the data from the GPU. I found that adding eHostCohorent and eHostCached reduced my read times from ~350ms to just 62ms.

Thought this might be useful for others to have as well.

koubaa and others added 30 commits February 4, 2026 10:36
* add datatype enum to python module

Signed-off-by: koubaa <koubaa@github.com>

* add datatype enum to python module

Signed-off-by: koubaa <koubaa@github.com>

* add doc

Signed-off-by: koubaa <koubaa@github.com>

---------

Signed-off-by: koubaa <koubaa@github.com>
Co-authored-by: koubaa <koubaa@github.com>
Signed-off-by: evanokeeffe <evan.okeeffe@tas-2.com>
…own #44 (#411)

* Sequence con/destructor is noexcept

Signed-off-by: Andrea Calabrese <andrea.calabrese@amarulasolutions.com>
Signed-off-by: Andrea Calabrese <andrea1995.c@live.com>

* Operations are noexcept

Signed-off-by: Andrea Calabrese <andrea.calabrese@amarulasolutions.com>
Signed-off-by: Andrea Calabrese <andrea1995.c@live.com>

* Algorithm is noexcept

Signed-off-by: Andrea Calabrese <andrea.calabrese@amarulasolutions.com>
Signed-off-by: Andrea Calabrese <andrea1995.c@live.com>

---------

Signed-off-by: Andrea Calabrese <andrea.calabrese@amarulasolutions.com>
Signed-off-by: Andrea Calabrese <andrea1995.c@live.com>
Signed-off-by: evanokeeffe <evan.okeeffe@tas-2.com>
* Operations are non-copy

As for Issue #20, operations should be non-copy. Instead of creating a
base NonCopyable class, I prefer to keep this inside the classes
themselves, so that we do not create new inherited structures.

Signed-off-by: Andrea Calabrese <andrea.calabrese@amarulasolutions.com>
Signed-off-by: Andrea Calabrese <andrea1995.c@live.com>

* Make Algorithm uncopyable

Same as previous commit

Signed-off-by: Andrea Calabrese <andrea.calabrese@amarulasolutions.com>
Signed-off-by: Andrea Calabrese <andrea1995.c@live.com>

* Image is non-copy

Signed-off-by: Andrea Calabrese <andrea.calabrese@amarulasolutions.com>
Signed-off-by: Andrea Calabrese <andrea1995.c@live.com>

* Manager is non-copy

Signed-off-by: Andrea Calabrese <andrea.calabrese@amarulasolutions.com>
Signed-off-by: Andrea Calabrese <andrea1995.c@live.com>

* Memory is non-copy

Signed-off-by: Andrea Calabrese <andrea.calabrese@amarulasolutions.com>
Signed-off-by: Andrea Calabrese <andrea1995.c@live.com>

* Sequence is non-copy

Signed-off-by: Andrea Calabrese <andrea.calabrese@amarulasolutions.com>
Signed-off-by: Andrea Calabrese <andrea1995.c@live.com>

* Tensor is non-copy

Signed-off-by: Andrea Calabrese <andrea.calabrese@amarulasolutions.com>
Signed-off-by: Andrea Calabrese <andrea1995.c@live.com>

---------

Signed-off-by: Andrea Calabrese <andrea.calabrese@amarulasolutions.com>
Signed-off-by: Andrea Calabrese <andrea1995.c@live.com>
Signed-off-by: evanokeeffe <evan.okeeffe@tas-2.com>
Signed-off-by: Alejandro Saucedo <alejandro.saucedo@zalando.de>
Signed-off-by: evanokeeffe <evan.okeeffe@tas-2.com>
* Added guard for vk 1.4 headers

Signed-off-by: Alejandro Saucedo <alejandro.saucedo@zalando.de>

* CI test for 1.4 compatibility

Signed-off-by: Alejandro Saucedo <alejandro.saucedo@zalando.de>

CI test for 1.4 compatibility

Signed-off-by: Alejandro Saucedo <alejandro.saucedo@zalando.de>

CI test for 1.4 compatibility

Signed-off-by: Alejandro Saucedo <alejandro.saucedo@zalando.de>

CI test for 1.4 compatibility

Signed-off-by: Alejandro Saucedo <alejandro.saucedo@zalando.de>

CI test for 1.4 compatibility

Signed-off-by: Alejandro Saucedo <alejandro.saucedo@zalando.de>

CI test for 1.4 compatibility

Signed-off-by: Alejandro Saucedo <alejandro.saucedo@zalando.de>

Updated cast to match vk namespace

Signed-off-by: Alejandro Saucedo <alejandro.saucedo@zalando.de>

Updated cast to match vk namespace

Signed-off-by: Alejandro Saucedo <alejandro.saucedo@zalando.de>

* Updated debugMessageCallback func to vk:: ns

Signed-off-by: Alejandro Saucedo <alejandro.saucedo@zalando.de>

* Updated debugMessageCallback func to vk:: ns

Signed-off-by: Alejandro Saucedo <alejandro.saucedo@zalando.de>

---------

Signed-off-by: Alejandro Saucedo <alejandro.saucedo@zalando.de>
Signed-off-by: evanokeeffe <evan.okeeffe@tas-2.com>
Change VKAPI_PTR to VKAPI_ATTR

Tested only on:
MSVC version: `Microsoft (R) C/C++ Optimizing Compiler Version 19.43.34808 for
x86`
VulkanSDK version: 1.4.309.0
Latest kompute commit: 299b11f

Signed-off-by: jamorphy <maps@jax2.net>
Signed-off-by: evanokeeffe <evan.okeeffe@tas-2.com>
Signed-off-by: zlaazlaa <2889827787@qq.com>
Signed-off-by: evanokeeffe <evan.okeeffe@tas-2.com>
…aces (#419)

* Update bin2h.cmake to avoid -Werror=missing-braces

Signed-off-by: zachferguson <zach.ferguson@clo3d.com>
Signed-off-by: Zachary Ferguson <zach.ferguson@clo3d.com>

* Use the fmt inside spdlog if using spdlog

Signed-off-by: zachferguson <zach.ferguson@clo3d.com>
Signed-off-by: Zachary Ferguson <zach.ferguson@clo3d.com>

* Fix python build by linking fmt when KOMPUTE_OPT_LOG_LEVEL_DISABLED

Signed-off-by: Zachary Ferguson <zach.ferguson@clo3d.com>

---------

Signed-off-by: zachferguson <zach.ferguson@clo3d.com>
Signed-off-by: Zachary Ferguson <zach.ferguson@clo3d.com>
Signed-off-by: evanokeeffe <evan.okeeffe@tas-2.com>
* Add eDeviceAndHost to Python bindings for MemoryTypes.

Update docstrings so that the build works.

Signed-off-by: Robert Quill <robert.quill@imgtec.com>

* Typo fix

Signed-off-by: Robert Quill <robert.quill@imgtec.com>

---------

Signed-off-by: Robert Quill <robert.quill@imgtec.com>
Signed-off-by: evanokeeffe <evan.okeeffe@tas-2.com>
Signed-off-by: zlaazlaa <2889827787@qq.com>
Signed-off-by: evanokeeffe <evan.okeeffe@tas-2.com>
* Fix push const inconsistent type bug

Signed-off-by: Alejandro Saucedo <alejandro.saucedo@zalando.de>

* Fix push const bug

Signed-off-by: Alejandro Saucedo <alejandro.saucedo@zalando.de>

* Added test to consts

Signed-off-by: Alejandro Saucedo <alejandro.saucedo@zalando.de>

* Added tests for const types@

Signed-off-by: Alejandro Saucedo <alejandro.saucedo@zalando.de>

* Added test to consts

Signed-off-by: Alejandro Saucedo <alejandro.saucedo@zalando.de>

* Added test to consts

Signed-off-by: Alejandro Saucedo <alejandro.saucedo@zalando.de>

* Added test to consts

Signed-off-by: Alejandro Saucedo <alejandro.saucedo@zalando.de>

---------

Signed-off-by: Alejandro Saucedo <alejandro.saucedo@zalando.de>
Signed-off-by: evanokeeffe <evan.okeeffe@tas-2.com>
* feat: Add utility function to compile GLSL source to SPIR-V

Signed-off-by: n-jay <nuwanjayawardene@gmail.com>

* refactor: Replace kp.Shader.compile_source with utility function compile_source

Signed-off-by: n-jay <nuwanjayawardene@gmail.com>

---------

Signed-off-by: n-jay <nuwanjayawardene@gmail.com>
Signed-off-by: evanokeeffe <evan.okeeffe@tas-2.com>
Signed-off-by: Matthias Möller <m_moeller@live.de>
Signed-off-by: evanokeeffe <evan.okeeffe@tas-2.com>
Previously the Python array would just be filled with the first element
of the data repeated to fill the array.

Fixes a number of the Python tests.

Signed-off-by: Robert Quill <robert.quill@imgtec.com>
Signed-off-by: evanokeeffe <evan.okeeffe@tas-2.com>
Signed-off-by: Alejandro Saucedo <alejandro.saucedo@zalando.de>
Signed-off-by: evanokeeffe <evan.okeeffe@tas-2.com>
Updated description for llama.cpp to indicate it is now decommissioned.

Signed-off-by: Alejandro Saucedo <alejandro.saucedo@zalando.de>
Signed-off-by: evanokeeffe <evan.okeeffe@tas-2.com>
Signed-off-by: evanokeeffe <evan.okeeffe@tas-2.com>
Signed-off-by: evanokeeffe <evan.okeeffe@tas-2.com>
Signed-off-by: evanokeeffe <evan.okeeffe@tas-2.com>
Signed-off-by: evanokeeffe <evan.okeeffe@tas-2.com>
Signed-off-by: evanokeeffe <evan.okeeffe@tas-2.com>
Signed-off-by: evanokeeffe <evan.okeeffe@tas-2.com>
* checks if given family queue has compute capability

Signed-off-by: Matthias Möller <m_moeller@live.de>

* test will search for queues with compute capabilities

Signed-off-by: Matthias Möller <m_moeller@live.de>

---------

Signed-off-by: Matthias Möller <m_moeller@live.de>
Signed-off-by: evanokeeffe <evan.okeeffe@tas-2.com>
spdlog is not build when the CMake option
"KOMPUTE_OPT_USE_BUILT_IN_SPDLOG" is set to false. When activating
spdlog for logging via CMake option "KOMPUTE_OPT_USE_SPDLOG", CMake will
deliver an error, as the current CMake file tries to add a definition to
the spdlog target.

Defining the compiler definition "SPDLOG_ACTIVE_LEVEL" has no effect on
spdlog itself, it just has an effect on spdlog target consumers.
Therefore, it can be removed so that the project can be build with the
mentioned CMake options.

Signed-off-by: Matthias Möller <m_moeller@live.de>
Signed-off-by: evanokeeffe <evan.okeeffe@tas-2.com>
Signed-off-by: evanokeeffe <evan.okeeffe@tas-2.com>
Signed-off-by: evanokeeffe <evan.okeeffe@tas-2.com>
Signed-off-by: evanokeeffe <evan.okeeffe@tas-2.com>
… nearly 350ms just on reads for an image processing pipeline. With this simple modification I was able to drop that to 62.1ms on my machine
@eokeeffe eokeeffe changed the title I found a nice little performance improvement when rad the data from vector + memcpy I found a nice little performance improvement when reading the data from vector + memcpy Sep 8, 2026
@axsaucedo

Copy link
Copy Markdown
Member

Pretty cool - thanks, could you have a look at the CI? Wonder if this there is something here that is breaking across

@axsaucedo

Copy link
Copy Markdown
Member

Also it seems your commits are pulling quite a lot of other commits

@eokeeffe

eokeeffe commented Sep 8, 2026

Copy link
Copy Markdown
Contributor Author

Also it seems your commits are pulling quite a lot of other commits

Yes, I pulled the latest from master and this happened. I'll close and open a clean PR for you.

@eokeeffe eokeeffe closed this Sep 8, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

10 participants