-
Notifications
You must be signed in to change notification settings - Fork 470
Issue #350 development #371
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
Conversation
Related to: SciSharp#350 Nvidia CUDA binaries are taken from archives: - CUDA 11 (cudart-llama-bin-win-cu11.7.1-x64.zip) - CUDA 12 (cudart-llama-bin-win-cu12.2.0-x64.zip) from the latest (at the moment of writing this) build of ggerganov's [llama.cpp](https://github.com/ggerganov/llama.cpp/releases/tag/b1643). Editing .nuspec at this point is discussible, however.
@martindevans @AsakusaRinne |
|
||
<None Include="$(MSBuildThisFileDirectory)runtimes/deps/cu11.7.1/cublas64_11.dll"> | ||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> | ||
<Link>cublas64_11.dll</Link> |
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.
I don't think we should include the files in the repo because the sum of the sizes could reach more than 500M. Though it's best to automatically include them in ci to upload to release, I don't mind uploading them manually.
The main concern at my side is how users include them in their projects. Here's a way I'd like to suggest:
- Add an API to
NativeLibraryConfig
, such asWithCublasDependency(string folder)
to allow users specify a path of these dependencies. - In
NativeApi.Load.cs
, after having got which native library to load, copy the dependencies specified by user to the same path of the selected native library.
Therefore users will have three ways to use the dependencies:
- Add the dependency folder to the PATH environment variables.
- Manually copy the dependencies to the same folder of used native library.
- Specify the path of dependencies in the code.
|
||
<file src="runtimes/deps/cu11.7.1/libllama.dll" target="runtimes\win-x64\native\cuda11\libllama.dll" /> | ||
<file src="runtimes/deps/cu11.7.1/libllama.so" target="runtimes\linux-x64\native\cuda11\libllama.so" /> | ||
<file src="runtimes\deps\cu11.7.1\cublas64_11.dll" target="cublas64_11.dll" /> |
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.
As discussed before, we'll add these files in the release instead of nuget package. Though I won't be against to distributing a new backend package with all these files, I don't think it's a good idea to add them into existed package. :)
@AsakusaRinne |
@Onkitova I see. We'll handle the part of CI/CD and thanks for all your works and suggestions about this issue. :) |
Thanks for investigating this @Onkitova, it definitely confirms the theory with the CUDA redist even if those massive files sizes are a bit of a pain! |
@AsakusaRinne How about publishing 2 new nuget packages with the cudart binaries: cuda11.7.1.runtime
cuda12.1.0.runtime
Then we can depend on those packages in our 2 CUDA backends. Since those dependencies will never change we won't have to worry about handling huge files every time we push out an update. |
It's definitely a good idea! |
I'll close this PR, since we've decided on a different course of action (separate cudart nuget packages). We can track that back over in #350 |
Related to: #350
Nvidia CUDA binaries are taken from archives:
Editing .nuspec at this point is discussible, however.