-
-
Notifications
You must be signed in to change notification settings - Fork 21
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Adding GPU support to VTL #54
base: main
Are you sure you want to change the base?
Conversation
WalkthroughThis update introduces comprehensive README files for each backend of the VTL Engine, including Cuda, OpenCL, OpenMP, and Vulkan, as well as a README for the Image module. These documents provide essential installation instructions, usage examples, and functionality overviews, enhancing user understanding and accessibility. The consistent format across backends simplifies switching between them, making it easier for developers to implement GPU acceleration and parallel processing in their applications. Changes
Sequence Diagram(s)sequenceDiagram
participant User
participant VTL Engine
participant Backend
User->>VTL Engine: Initialize tensor
VTL Engine->>Backend: Select appropriate backend (e.g., cuda())
Backend-->>VTL Engine: Device management and tensor creation
VTL Engine-->>User: Return tensor ready for use
Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media? TipsChatThere are 3 ways to chat with CodeRabbit:
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (invoked as PR comments)
Additionally, you can add CodeRabbit Configuration File (
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 5
Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Files selected for processing (6)
- backends/README.md (1 hunks)
- backends/cuda/README.md (1 hunks)
- backends/opencl/README.md (1 hunks)
- backends/openmp/README.md (1 hunks)
- backends/vulkan/README.md (1 hunks)
- tools/Image/Readme.md (1 hunks)
Files skipped from review due to trivial changes (5)
- backends/cuda/README.md
- backends/opencl/README.md
- backends/openmp/README.md
- backends/vulkan/README.md
- tools/Image/Readme.md
Additional context used
Markdownlint
backends/README.md
4-4: Expected: 0; Actual: 3
Unordered list indentation(MD007, ul-indent)
5-5: Expected: 0; Actual: 3
Unordered list indentation(MD007, ul-indent)
6-6: Expected: 0; Actual: 3
Unordered list indentation(MD007, ul-indent)
7-7: Expected: 0; Actual: 3
Unordered list indentation(MD007, ul-indent)
11-11: null
Headings must start at the beginning of the line(MD023, heading-start-left)
22-22: null
Headings must start at the beginning of the line(MD023, heading-start-left)
32-32: null
Headings must start at the beginning of the line(MD023, heading-start-left)
42-42: null
Headings must start at the beginning of the line(MD023, heading-start-left)
11-11: Punctuation: ':'
Trailing punctuation in heading(MD026, no-trailing-punctuation)
22-22: Punctuation: ':'
Trailing punctuation in heading(MD026, no-trailing-punctuation)
32-32: Punctuation: ':'
Trailing punctuation in heading(MD026, no-trailing-punctuation)
42-42: Punctuation: ':'
Trailing punctuation in heading(MD026, no-trailing-punctuation)
10-10: null
Bare URL used(MD034, no-bare-urls)
21-21: null
Bare URL used(MD034, no-bare-urls)
First install opencl toolkit: https://www.khronos.org/opencl/ | ||
### usage: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fix heading punctuation and format URL.
The heading should not have trailing punctuation, and the URL should be formatted as a proper link.
- First install opencl toolkit: https://www.khronos.org/opencl/
+ First install the [OpenCL toolkit](https://www.khronos.org/opencl/)
Committable suggestion was skipped due to low confidence.
Tools
Markdownlint
22-22: null
Headings must start at the beginning of the line(MD023, heading-start-left)
22-22: Punctuation: ':'
Trailing punctuation in heading(MD026, no-trailing-punctuation)
21-21: null
Bare URL used(MD034, no-bare-urls)
``` | ||
|
||
## OpenMP | ||
### usage: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fix heading punctuation.
The heading should not have trailing punctuation.
- ### usage:
+ ### usage
Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
### usage: | |
### usage |
Tools
Markdownlint
32-32: null
Headings must start at the beginning of the line(MD023, heading-start-left)
32-32: Punctuation: ':'
Trailing punctuation in heading(MD026, no-trailing-punctuation)
- Cuda | ||
- OpenCL | ||
- OpenMP | ||
- Vulkan |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fix unordered list indentation.
The unordered list items are indented incorrectly. The correct indentation should be 2 spaces.
- - Cuda
- - OpenCL
- - OpenMP
- - Vulkan
+ - Cuda
+ - OpenCL
+ - OpenMP
+ - Vulkan
Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
- Cuda | |
- OpenCL | |
- OpenMP | |
- Vulkan | |
- Cuda | |
- OpenCL | |
- OpenMP | |
- Vulkan |
Tools
Markdownlint
4-4: Expected: 0; Actual: 3
Unordered list indentation(MD007, ul-indent)
5-5: Expected: 0; Actual: 3
Unordered list indentation(MD007, ul-indent)
6-6: Expected: 0; Actual: 3
Unordered list indentation(MD007, ul-indent)
7-7: Expected: 0; Actual: 3
Unordered list indentation(MD007, ul-indent)
First install cuda toolkit: https://developer.nvidia.com/cuda-downloads | ||
### usage: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fix heading punctuation and format URL.
The heading should not have trailing punctuation, and the URL should be formatted as a proper link.
- First install cuda toolkit: https://developer.nvidia.com/cuda-downloads
+ First install the [CUDA toolkit](https://developer.nvidia.com/cuda-downloads)
Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
First install cuda toolkit: https://developer.nvidia.com/cuda-downloads | |
### usage: | |
First install the [CUDA toolkit](https://developer.nvidia.com/cuda-downloads) | |
### usage |
Tools
Markdownlint
11-11: null
Headings must start at the beginning of the line(MD023, heading-start-left)
11-11: Punctuation: ':'
Trailing punctuation in heading(MD026, no-trailing-punctuation)
10-10: null
Bare URL used(MD034, no-bare-urls)
``` | ||
|
||
## Vulkan | ||
### usage: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fix heading punctuation.
The heading should not have trailing punctuation.
- ### usage:
+ ### usage
Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
### usage: | |
### usage |
Tools
Markdownlint
42-42: null
Headings must start at the beginning of the line(MD023, heading-start-left)
42-42: Punctuation: ':'
Trailing punctuation in heading(MD026, no-trailing-punctuation)
That's amazing, good luck with this! |
hey @ibrandiay ! nice to know you are planning to work on this. There is already some work initiated on this since we have VCL integrated on VTL, for example here https://github.com/vlang/vtl/blob/main/storage/vcl_d_vcl.v we define the store using VCL and here we have the instantiation method Line 17 in ad01618
(VCL is the official OpenCL wrapper for V part of VSL) I would like to discuss the design of this solution with you before you start the implementation and maybe implement one backend for each PR just to make it easier to test 😊 |
```vlang | ||
import vtl | ||
vtl_tensor := vtl.from_array([1.0, 2, 3, 4], [2, 2])! | ||
vtl_tensor.opencl() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
no need to have an extra backend for opencl. We must use VCL since it is the V official OpenCL wrapper
Line 17 in ad01618
pub fn (t &Tensor[T]) vcl(params storage.VclStorageParams) !&VclTensor[T] { |
we could have an alias function called opencl tho
@ulises-jeremias Thanks for the info, |
The goal is to add different backends like CUDA, Vulkan and others, in order to enable training of AI models on GPUs. I also plan to add GPU support for ARM (Android and others)... I have initialized this part that I will develop and update from time to time. Thank you.
Summary by CodeRabbit
These updates improve accessibility and usability for developers integrating different backend technologies within their applications.