Skip to content
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

List of necessary material for documentation #5

Open
leios opened this issue Jan 23, 2020 · 6 comments
Open

List of necessary material for documentation #5

leios opened this issue Jan 23, 2020 · 6 comments
Labels
documentation Improvements or additions to documentation

Comments

@leios
Copy link
Contributor

leios commented Jan 23, 2020

I would like to help a bit with documentation and would like to create a list of things we need to discuss to "complete" the documentation. Issue #1 brought up installation instructions, but I thought a more defined list would be worthwhile.

In particular, I feel we are missing:

  1. Shared memory -- Here, we seem to be missing use-cases for both static and dynamic shared memory. For this, I would propose a worked example of a simple (single-GPU) transpose
  2. Using different streams -- Maybe recreating this example? Actually, the only way I know how to initialize different streams is via CUDAdrv. Is there a better way to do this?
  3. Using the CuFFT library -- This is especially useful because if you do not create your own plan and are doing any form of timestepping, the garbage collector cannot always keep up and you can quickly run out of memory.
  4. Cuda-aware MPI example in the multi-GPU example. I can see this not being useful to most users, though.

As a general question, would it be worth adding a section in the documentation for examples, explicitly?

@dnabanita7
Copy link

I will add these. Adding examples will surely help to make the users/developers understand and they can tweak around finding errors. So, I think adding it will surely do good.

@leios
Copy link
Contributor Author

leios commented Jan 26, 2020

Hey Naba, I also have experience with this and don't mind helping out. I just wanted to see if there were further examples people wanted.

@dnabanita7
Copy link

Hey @leios ! Oh sure! You can add them. I should complete the cuda installation at the first place.

@maleadt
Copy link
Member

maleadt commented Jan 27, 2020

As a general question, would it be worth adding a section in the documentation for examples, explicitly?

Sure! There's a tutorials section, so examples would make sense too. One thought for examples would be to use Literate so that the files are regular, executable Julia scripts. But nothing is set in stone, so go ahead and we can always evaluate afterwards.

Using different streams -- Maybe recreating this example? Actually, the only way I know how to initialize different streams is via CUDAdrv. Is there a better way to do this?

Streams are tricky; we have all the low-level building blocks but haven't threaded it through so that high-level functionality (think CUBLAS or CUFFT calls) use them. So this would require some work first.

As a general comment though, I've always held back on adding documentation on things that are well-documented by CUDA itself. That approach has not shown to work well though, because lots of users start programming with GPUs in Julia without having CUDA C experience. Still, I think it would hurt maintainability if we copy too much of the upstream documentation here.

@leios
Copy link
Contributor Author

leios commented Jan 27, 2020

Right, the main thing is that certain keywords are sometimes a bit hard to find in Julia. I don't think redoing an nvidia guide is worthwhile, but having complementary code could be useful.

@ali-ramadhan
Copy link

One thought for examples would be to use Literate so that the files are regular, executable Julia scripts.

Another benefit of using Literate.jl is that documentation will fail to build if the examples break (or go out of date).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
documentation Improvements or additions to documentation
Projects
None yet
Development

No branches or pull requests

4 participants