GSOC 2021 Idea Discussion

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

GSOC 2021 Idea Discussion

Atharva Dubey
Hello all, 
I am Atharva Dubey and have been using octave for a while now. A quick introduction about me, technically, I am quite familiar and well versed in the field of machine learning algorithms.  I am also a parallel computing enthusiast and have worked OpenMP, SYCL and a little bit of CUDA as well and I am proficient with C++ as well as Python. 

For GSoC 2021, I propose a machine learning library with hardware acceleration support, for a variety of devices, let it be AMD GPUs, FPGAs ASICs etc., etc and I propose this using SYCL. I have already started on it(it is not quite ready yet) and you could find it here - https://github.com/AD2605/SYCML

please let me know your feedback and whether it a good plan and how to proceed with it. 

Thanks and Regards

Reply | Threaded
Open this post in threaded view
|

Re: GSOC 2021 Idea Discussion

siko1056
On 3/18/21 5:18 PM, Atharva Dubey wrote:

> Hello all,
> I am Atharva Dubey and have been using octave for a while now. A quick
> introduction about me, technically, I am quite familiar and well versed
> in the field of machine learning algorithms.  I am also a parallel
> computing enthusiast and have worked OpenMP, SYCL and a little bit of
> CUDA as well and I am proficient with C++ as well as Python.
>
> For GSoC 2021, I propose a machine learning library with hardware
> acceleration support, for a variety of devices, let it be AMD GPUs,
> FPGAs ASICs etc., etc and I propose this using SYCL. I have already
> started on it(it is not quite ready yet) and you could find it here -
> https://github.com/AD2605/SYCML <https://github.com/AD2605/SYCML>
>
> please let me know your feedback and whether it a good plan and how to
> proceed with it.
>
> Thanks and Regards
>


Dear Atharva Dubey,

Thank you for your interest and your project suggestion.  Looking at
your Github "SYCML" project, I do not see a clear relation to Octave.
How does your library in earliest development stage fit in this picture?

Best wishes,
Kai

Reply | Threaded
Open this post in threaded view
|

Re: GSOC 2021 Idea Discussion

Octave - Maintainers mailing list
In reply to this post by Atharva Dubey

On 3/18/21 4:18 AM, Atharva Dubey wrote:

> Hello all,
> I am Atharva Dubey and have been using octave for a while now. A quick
> introduction about me, technically, I am quite familiar and well
> versed in the field of machine learning algorithms.  I am also a
> parallel computing enthusiast and have worked OpenMP, SYCL and a
> little bit of CUDA as well and I am proficient with C++ as well as
> Python.
>
> For GSoC 2021, I propose a machine learning library with hardware
> acceleration support, for a variety of devices, let it be AMD GPUs,
> FPGAs ASICs etc., etc and I propose this using SYCL. I have already
> started on it(it is not quite ready yet) and you could find it here -
> https://github.com/AD2605/SYCML <https://github.com/AD2605/SYCML>
>
> please let me know your feedback and whether it a good plan and how to
> proceed with it.
>
> Thanks and Regards
>
It would be great if SYCL was accessible from Octave, but you seem to
use the Codeplay implementation which appears not to be under a GPL
compatible license required by Octave.

https://sycl.tech/#get-sycl

lists other implementations, like triSYCL which may be more
license-compatible.


Reply | Threaded
Open this post in threaded view
|

Re: GSOC 2021 Idea Discussion

Atharva Dubey
In reply to this post by siko1056
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
Reply | Threaded
Open this post in threaded view
|

Re: GSOC 2021 Idea Discussion

siko1056
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/