[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: GSOC 2021 Idea Discussion
From: |
Kai Torben Ohlhus |
Subject: |
Re: GSOC 2021 Idea Discussion |
Date: |
Sat, 20 Mar 2021 22:14:26 +0900 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.8.0 |
On 3/20/21 7:48 PM, Atharva Dubey wrote:
Hello Mr. Torben
Even though the library is in the initial stages of development, I
would keep developing it and work on it extensively during GSOC. Octave
is meant for scientific computing which would include machine learning
algorithms, many of which can be accelerated on the GPU. Therefore I
believe it is relevant to Octave as it would be good to have a dedicated
ML library with GPU acceleration.
Also, I am really interested in HPC, and I had another idea, which is to
provide hardware acceleration to the scientific algorithms
already present. For example, write a kernel for FFT in both Cuda as
well as SYCL (so that we could cover all the devices) and dynamically
dispatch it to the target device. This way octave would have strong
hardware acceleration support. This would however be a big project, as
most of the BLAS would have to be rewritten for SYCL. For Nvidia GPUs,
we could use cuBLAS/ NvBLAS.
Thanks and Regards,
Atharva Dubey
Dear Atharva Dubey,
Thank you for your explanations. I am sure you will put lots of work in
your project during the 18 hours times 10 weeks [1] of GSoC. Seeing all
your ambitious plans, the given GSoC time is rather short. To take your
application seriously, I ask you to narrow your scope and to do some
research in advance.
For Octave it would be of course nice to have functions with GPU
acceleration. But what exactly do you want to work on in the given time
frame? Buzzwords alone do not define a project.
- An independent "machine learning" library for SYCL? What about [2]?
- Enabling some Octave core algorithms to benefit from GPU acceleration?
Which and how?
- Rewriting a BLAS for SYCL? What about [3]?
All three points for themselves are in my opinion too ambitious for a
GSoC project without prior scope definition and proper narrowing. Yours
might end up in another proof-of-concept "octave machine learning" code,
of which there are already plenty (I counted 1250 on GitHub [4] alone).
Despite another comment on the mailing-list [5] by przemek klosowski
about using Codeplays SYCL implementation. With SYCL there is a
technical issue, as it requires C++17 [6] and Octave still only requires
C++11. It is possible to handle this, but it requires more thought how
to do it, without making Octave's code unmaintainable by lots of C++17
feature branches.
If you want to focus on "machine learning" algorithms with GPU
acceleration using Octave, take a look at the OpenCL ocl-package [7].
Best,
Kai
[1]
https://developers.google.com/open-source/gsoc/faq#how_much_time_does_gsoc_participation_take
[2] https://github.com/codeplaysoftware/SYCL-ML
[3] https://github.com/codeplaysoftware/sycl-blas
[4] https://github.com/search?q=machine+learning+octave&type=Repositories
[5]
https://lists.gnu.org/archive/html/octave-maintainers/2021-03/msg00050.html
[6] https://en.wikipedia.org/wiki/SYCL
[7] https://octave.sourceforge.io/ocl/