diff --git a/README.md b/README.md index 5920ab161..267d04b1e 100644 --- a/README.md +++ b/README.md @@ -95,22 +95,22 @@ int main() { { tensorA, tensorB }, std::vector(shader.begin(), shader.end())); + // 4.1. Before submitting sequence batch we wait for the async operation + mgr.evalOpAwaitDefault(); + // 5. Create managed sequence to submit batch operations to the CPU std::shared_ptr sq = mgr.getOrCreateManagedSequence("seq").lock(); - // Explicitly begin recording batch commands + // 5.1. Explicitly begin recording batch commands sq->begin(); - // Record batch commands + // 5.2. Record batch commands sq->recordrecordend(); - // Before submitting sequence batch we wait for the previous async operation - mgr.evalOpAwaitDefault(); - // 6. Map data back to host by running the sequence of batch operations sq->eval(); @@ -134,6 +134,7 @@ int main() { ### End-to-end examples * [Machine Learning Logistic Regression Implementation](https://towardsdatascience.com/machine-learning-and-data-processing-in-the-gpu-with-vulkan-kompute-c9350e5e5d3a) +* [Parallelizing GPU-intensive Workloads via Multi-Queue Operations](https://towardsdatascience.com/parallelizing-heavy-gpu-workloads-via-multi-queue-operations-50a38b15a1dc) * [Android NDK Mobile Kompute ML Application](https://towardsdatascience.com/gpu-accelerated-machine-learning-in-your-mobile-applications-using-the-android-ndk-vulkan-kompute-1e9da37b7617) * [Game Development Kompute ML in Godot Engine](https://towardsdatascience.com/supercharging-game-development-with-gpu-accelerated-ml-using-vulkan-kompute-the-godot-game-engine-4e75a84ea9f0) diff --git a/docs/conf.py b/docs/conf.py index cce062ef0..2c6eb74e0 100755 --- a/docs/conf.py +++ b/docs/conf.py @@ -22,7 +22,7 @@ copyright = '2020, The Institute for Ethical AI & Machine Learning' author = 'Alejandro Saucedo' # The full version, including alpha/beta/rc tags -release = '0.3.2' +release = '0.4.0' # -- General configuration --------------------------------------------------- diff --git a/docs/overview/advanced-examples.rst b/docs/overview/advanced-examples.rst index 8e10cc451..649ea4e2c 100644 --- a/docs/overview/advanced-examples.rst +++ b/docs/overview/advanced-examples.rst @@ -23,6 +23,7 @@ End-to-end examples * `Machine Learning Logistic Regression Implementation `_ +* `Parallelizing GPU-intensive Workloads via Multi-Queue Operations [https://towardsdatascience.com/parallelizing-heavy-gpu-workloads-via-multi-queue-operations-50a38b15a1dc>`_ * `Android NDK Mobile Kompute ML Application `_ * `Game Development Kompute ML in Godot Engine `_ @@ -69,11 +70,7 @@ Pass compute shader data in glsl/hlsl text or compiled SPIR-V format (or as path std::vector(shader.begin(), shader.end())); // Sync the GPU memory back to the local tensor - // You can run the job asynchronously with the Async function - mgr.evalOpAsyncDefault({ tensorA, tensorB }); - - // Await for the asynchonous default sequence to finish - mgr.evalOpAwaitDefault(); + mgr.evalOpDefault({ tensorA, tensorB }); // Prints the output which is A: { 0, 1, 2 } B: { 3, 4, 5 } std::cout << fmt::format("A: {}, B: {}", diff --git a/docs/overview/async-parallel.rst b/docs/overview/async-parallel.rst index 0c8c7a097..a915bf3c3 100644 --- a/docs/overview/async-parallel.rst +++ b/docs/overview/async-parallel.rst @@ -11,6 +11,8 @@ In this section we will cover the following points: * Asynchronous operation submission * Parallel processing of operations +You can also find the published `blog post on the topic using Kompute `_, which covers the points discussed in this section further. + Below is the architecture we'll be covering further in the parallel operations section through command submission across multiple family queues. .. image:: ../images/queue-allocation.jpg