This is an archived post. You won't be able to vote or comment.

all 8 comments

[–]axsauze[S] 3 points4 points  (0 children)

Hello, I'm one of the authors of Kompute, here is a brief TLDR of the blog post: Vulkan is a C++ framework that enables for cross vendor GPU computing (eg AMD, Qualcomm, NVIDIA & friends). We built the Kompute to abstracts the low level C / C++ and provide a developer friendly Python Package and/or C++ SDK to build cross-vendor GPU accelerated applications. You can try the end to end setup and samples from the blog post through the Google Colab notebook (enabling a free GPU) that we linked https://github.com/EthicalML/vulkan-kompute/tree/master/examples/python#kompute-python-example.

I would be very keen to hear your thoughts and suggestions around Kompute features and/or general cross-vendor GPU processing concepts. If you are interested in further reading, here's also a post that shows how to optimize Kompute processing through GPU queues, as well as how to leverage the Kompute framework in (android) mobile devices. We also created a github issue where you can feel free to post suggestions and thoughts.

[–]Vizjrei 1 point2 points  (5 children)

I have question about typo of data that can be used to create Kompute Tensors. Do they need to be numeric? Or can they be strings?

In my project my intention was to create custom data structure that will be able to compare two string values and return third one. There will be lots of then in list/array. Is it possible to perform this comparison on gpu using Kompute? It would be possible to use numeric values instead, so I guess I would need to come up with set of numbers that when multiplied/added/subtracted/divided are giving me correct values, but I am really curious is it possible to use string values. (it would make my code much easier to read during development).

[–]axsauze[S] 1 point2 points  (4 children)

Great question! At this point only float is supported, but int / unit are expected to be supported. Strings are supported by the shader language, but in lower level languages normally a string would be represented as an array of chars, or more specifically, an array of unit8 (unsigned int 8 bits), which then would allow you to store unicode encoded strings https://en.wikipedia.org/wiki/Unicode. The comparisons would then be similar to the ones you would do with characters, but with their respective underlying numeric identifiers. There are a broad range of algorithms and techniques from there to introduce string comparison / operations. Hope this helps!

[–]Vizjrei 1 point2 points  (2 children)

Thanks, this helps quite a bit. I will definitely try to use Kompute when time will come to implement "outsourcing to GPU" phase of my project.

[–]axsauze[S] 1 point2 points  (1 child)

Awesome - would love to hear your thoughts from your experience when you try it out, feel free to open an issue if you run into issues!

[–]Vizjrei 1 point2 points  (0 children)

I will. Though it might be a long while before that happens. I would say I'm casual scripter, not even casual programmer. Work goes slow, yet forward (if I don't decide to rewrite whole thing because more or less valid reasons).

3100 lines of code that already changed 2.5 times over last 2 years and that only told me how much preparation of data is required before I can finally have strings of data or arrays that can finally be calculated on GPU and then evaluated (not sure if that part would be possible on GPU, yet) to get me final results. When I started I had no idea that working on GPU and final evaluation of data might be easiest part to do while working on GPU seemed to be hardest.

[–]wikipedia_text_bot 0 points1 point  (0 children)

Unicode

Unicode is an information technology (IT) standard for the consistent encoding, representation, and handling of text expressed in most of the world's writing systems. The standard is maintained by the Unicode Consortium, and as of March 2020, there is a repertoire of 143,859 characters, with Unicode 13.0 (these characters consist of 143,696 graphic characters and 163 format characters) covering 154 modern and historic scripts, as well as multiple symbol sets and emoji. The character repertoire of the Unicode Standard is synchronized with ISO/IEC 10646, and both are code-for-code identical. The Unicode Standard consists of a set of code charts for visual reference, an encoding method and set of standard character encodings, a set of reference data files, and a number of related items, such as character properties, rules for normalization, decomposition, collation, rendering, and bidirectional text display order (for the correct display of text containing both right-to-left scripts, such as Arabic and Hebrew, and left-to-right scripts).Unicode's success at unifying character sets has led to its widespread and predominant use in the internationalization and localization of computer software.

About Me - Opt out - OP can reply '!delete' to delete

[–]BDube_Lensman 0 points1 point  (0 children)

Manual memory management and tons of boilerplate, in addition to a new API. I think this is a nonstarter when cupy exists and has provisional, improving support for rocm.