LibRapid / librapid

A highly optimised C++ library for mathematical applications and neural networks.
http://librapid.rtfd.io
MIT License
163 stars 10 forks source link

Conan Support #9

Open samuel-emrys opened 2 years ago

samuel-emrys commented 2 years ago

Hey! This library looks really cool. For your awareness, I've raised a request for a recipe for this library to be created for the Conan Center Index . Conan is a C++ package manager that I think would help distribute your library with dependency management, especially with respect to pulling openblas in. If you're interested in supporting a conan recipe, I'm sure they would love to receive a pull request.

Pencilcaseman commented 2 years ago

This looks like something that could be really useful! Thanks for setting this up!

Pencilcaseman commented 2 years ago

I should probably do this at some point... gotta clean things up first but I have not forgotten this :)

poretga99 commented 1 year ago

There's one slight problem with the conan package.

Currently, there's no CUDA recipe for conan due to the licensig issue of redistributing CUDA binaries. Also, conan (conan-center-index) does not allow the redistribution of pre-built libraries, everything must be built from sources.

I could provide a conan recipe for librapid, but by the first look, some modules may not be supported out of the box via conan central repository.

Pencilcaseman commented 1 year ago

I haven't yet had enough time to look into Conan and what it supports/allows, but other than CUDA and OpenBLAS, all of LibRapid can be compiled from source. The prebuilt OpenBLAS binaries are cloned from https://github.com/LibRapid/BuildOpenBLAS which periodically updates and updates the code. If Conan supports cloning git repos, this should be fine (?).

With regards to CUDA, I think packaging the binaries directly would be a bad idea due to device incompatibilities and the fact that the CUDA binaries are well over 1GB. Would it be possible to simply link with CUDA if it's detected on the system already? That's what the current CMakeLists.txt script does.

But yea, if you could set up a Conan recipe that'd be awesome!

poretga99 commented 1 year ago

I see that conan recipe openBLAS already exists, therefore this shouldn't be a problem.

Regarding CUDA, we can leave an option for conan recipe, which lets user enable it and compile with CUDA, but the default conan recipe must keep it disabled.

I'll take a look the next week :)

Pencilcaseman commented 1 year ago

Awesome! Let me know how it goes and if I can help with anything.

I may clean up the CMakeLists file soon as well, but the logic will remain the same. Not sure if that affects anything but thought I'd let you know.