Skip to content

Add noexcept to all constructors to explicitly state no exception thrown #44#411

Merged
axsaucedo merged 3 commits intoKomputeProject:masterfrom
ThePseudo:noexcept
Feb 11, 2025
Merged

Add noexcept to all constructors to explicitly state no exception thrown #44#411
axsaucedo merged 3 commits intoKomputeProject:masterfrom
ThePseudo:noexcept

Conversation

@ThePseudo
Copy link
Contributor

In this PR, I add noexcept to all constructors that are noexcept

@ThePseudo ThePseudo marked this pull request as draft February 6, 2025 16:20
@ThePseudo
Copy link
Contributor Author

@axsaucedo I prepared this PR for #44 but I think there is a design problem to do this. I found this in the failed test because now Memory fails, throws an exception but it gets converted to a segfault in the Tensor class (as it should be).

However, I do not feel right to delete the test for the Tensor/Memory data to be >0 in size or delete the check inside of the tensor.
One easy solution might be not having the Tensor being noexcept, and that would be all.

However, I also do not feel this to be completely right, and as the tensor size should be constant I feel that it should be possible to check it, and (this is really a stretch) I feel that this could be possible at compile time through templates, although I am not sure.

What do you suggest?

@ThePseudo ThePseudo force-pushed the noexcept branch 2 times, most recently from 1969b2a to 2dc1f95 Compare February 10, 2025 07:52
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: Andrea Calabrese <andrea.calabrese@amarulasolutions.com>
Signed-off-by: Andrea Calabrese <andrea1995.c@live.com>
@ThePseudo ThePseudo marked this pull request as ready for review February 10, 2025 07:56
@axsaucedo
Copy link
Member

Thank you for the contribution @ThePseudo !

Additionally I agree with your comments; to be honest it's been well overdue to properly think about having a better custom exception handling approach, as currently there's quite a few situations where the program exits where a domain-specific exception would be better handled.

One easy solution might be not having the Tensor being noexcept, and that would be all.
For the purpose of this PR I would say we can go forward with this, and then revisit in context of the above; likely this may end up as a bit of a exception to the rule, but let's explore if it can be done (+ wthout a more complex approach).

Based on that let me know and we can merge this one to approach separate.

@ThePseudo
Copy link
Contributor Author

Hi @axsaucedo, I think it is possible to merge this one. I was experimenting with the other solution and I don't like where it was going: basically it would become a template hell, which would even be ok by me, but everything becoming statically decided does not work for everything (memory usage would be decided at compile time, basically).
My feeling is that I would like to not have exceptions, but in the end it is the most reasonable solution C++ offers us.

@axsaucedo
Copy link
Member

My feeling is that I would like to not have exceptions, but in the end it is the most reasonable solution C++ offers us.
Agreed - but for this context specifically, I meant to clean up the areas in the code where we throw a std::runtime_error as to be honest a more specific exception would be more reasonable.

In regards to this PR looks good to go, thanks for the contribution

@axsaucedo axsaucedo merged commit 11c0b99 into KomputeProject:master Feb 11, 2025
8 checks passed
@ThePseudo ThePseudo deleted the noexcept branch February 11, 2025 13:14
eokeeffe pushed a commit to eokeeffe/kompute that referenced this pull request Feb 4, 2026
…own KomputeProject#44 (KomputeProject#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>
axsaucedo added a commit that referenced this pull request Feb 27, 2026
* add datatype enum to python module (#404)

* 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>

* Add noexcept to all constructors to explicitly state no exception thrown #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>

* Remove copy operations from classes in Kompute (#412)

* 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>

* Fix noexcept missing from OpMemoryBarrier (#413)

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

* 414 support for 1 4 headers (#415)

* 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>

* Fix syntax error (MSVC) in Manager.cpp (#418)

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>

* Fix compile error in android (#423)

Signed-off-by: zlaazlaa <2889827787@qq.com>
Signed-off-by: evanokeeffe <evan.okeeffe@tas-2.com>

* Make spdlog and fmt mutually exclusive and support -Werror=missing-braces (#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 missing eDeviceAndHost MemoryType to the Python Bindings (#424)

* 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>

* feat: Add log library linking to Android build (#428)

Signed-off-by: zlaazlaa <2889827787@qq.com>
Signed-off-by: evanokeeffe <evan.okeeffe@tas-2.com>

* Fix python SpecConst and PushConst bugs (#430)

* 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>

* Update Python Matmul examples (#434)

* 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>

* update internal gtest to v1.17.0 (#437)

Signed-off-by: Matthias Möller <m_moeller@live.de>
Signed-off-by: evanokeeffe <evan.okeeffe@tas-2.com>

* Fix incorrect creation of python arrays in Tensor.data (#440)

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>

* Updated to pybind 3.0.0 (#431)

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

* Clarify status of llama.cpp in README (#446)

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>

* adding kompute example using debug printf

Signed-off-by: evanokeeffe <evan.okeeffe@tas-2.com>

* adding link to the draft article

Signed-off-by: evanokeeffe <evan.okeeffe@tas-2.com>

* Updating the readme for the debug statement example

Signed-off-by: evanokeeffe <evan.okeeffe@tas-2.com>

* Adding in the example shader, gitignore targets it so needed to force in

Signed-off-by: evanokeeffe <evan.okeeffe@tas-2.com>

* Modifying the comment to include bytes in the comment on message length

Signed-off-by: evanokeeffe <evan.okeeffe@tas-2.com>

* Correcting the readme for spelling mistakes in vulkan_ext_printf

Signed-off-by: evanokeeffe <evan.okeeffe@tas-2.com>

* Fix family queue selection in tests (#448)

* 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>

* removes compile definition defining for spdlog target (#449)

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>

* adding kompute example using debug printf

Signed-off-by: evanokeeffe <evan.okeeffe@tas-2.com>

* adding link to the draft article

Signed-off-by: evanokeeffe <evan.okeeffe@tas-2.com>

* Updating the readme for the debug statement example

Signed-off-by: evanokeeffe <evan.okeeffe@tas-2.com>

---------

Signed-off-by: koubaa <koubaa@github.com>
Signed-off-by: evanokeeffe <evan.okeeffe@tas-2.com>
Signed-off-by: Andrea Calabrese <andrea.calabrese@amarulasolutions.com>
Signed-off-by: Andrea Calabrese <andrea1995.c@live.com>
Signed-off-by: Alejandro Saucedo <alejandro.saucedo@zalando.de>
Signed-off-by: jamorphy <maps@jax2.net>
Signed-off-by: zlaazlaa <2889827787@qq.com>
Signed-off-by: zachferguson <zach.ferguson@clo3d.com>
Signed-off-by: Zachary Ferguson <zach.ferguson@clo3d.com>
Signed-off-by: Robert Quill <robert.quill@imgtec.com>
Signed-off-by: n-jay <nuwanjayawardene@gmail.com>
Signed-off-by: Matthias Möller <m_moeller@live.de>
Co-authored-by: Mohamed Koubaa <koubaa.m@gmail.com>
Co-authored-by: koubaa <koubaa@github.com>
Co-authored-by: Andrea Calabrese <18246320+ThePseudo@users.noreply.github.com>
Co-authored-by: Alejandro Saucedo <axsauze@gmail.com>
Co-authored-by: jamorphy <148006242+jamorphy@users.noreply.github.com>
Co-authored-by: zlaa <72907523+zlaazlaa@users.noreply.github.com>
Co-authored-by: Zachary Ferguson <zy.fergus@gmail.com>
Co-authored-by: Robert Quill <robert.quill@imgtec.com>
Co-authored-by: Nuwan Jayawardene <nuwanjayawardene@gmail.com>
Co-authored-by: Matthias Möller <m_moeller@live.de>
Co-authored-by: evanokeeffe <evan.okeeffe@tas-2.com>
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.

2 participants