[llvm] r259307 - [doc] improve the doc for CUDA
Hal Finkel via llvm-commits
llvm-commits at lists.llvm.org
Tue Feb 2 15:01:08 PST 2016
Hi Jingyue,
Thanks for updating this! FWIW, however, these changes don't yet seem to be reflected on the web site (http://llvm.org/docs/CompileCudaWithLLVM.html).
-Hal
----- Original Message -----
> From: "Jingyue Wu via llvm-commits" <llvm-commits at lists.llvm.org>
> To: llvm-commits at lists.llvm.org
> Sent: Saturday, January 30, 2016 5:48:47 PM
> Subject: [llvm] r259307 - [doc] improve the doc for CUDA
>
> Author: jingyue
> Date: Sat Jan 30 17:48:47 2016
> New Revision: 259307
>
> URL: http://llvm.org/viewvc/llvm-project?rev=259307&view=rev
> Log:
> [doc] improve the doc for CUDA
>
> 1. Mentioned that CUDA support works best with trunk.
> 2. Simplified the example by removing its dependency on the CUDA
> samples.
> 3. Explain the --cuda-gpu-arch flag.
>
> Modified:
> llvm/trunk/docs/CompileCudaWithLLVM.rst
>
> Modified: llvm/trunk/docs/CompileCudaWithLLVM.rst
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/CompileCudaWithLLVM.rst?rev=259307&r1=259306&r2=259307&view=diff
> ==============================================================================
> --- llvm/trunk/docs/CompileCudaWithLLVM.rst (original)
> +++ llvm/trunk/docs/CompileCudaWithLLVM.rst Sat Jan 30 17:48:47 2016
> @@ -18,9 +18,11 @@ familiarity with CUDA. Information about
> How to Build LLVM with CUDA Support
> ===================================
>
> -Below is a quick summary of downloading and building LLVM. Consult
> the `Getting
> -Started <http://llvm.org/docs/GettingStarted.html>`_ page for more
> details on
> -setting up LLVM.
> +CUDA support is still in development and works the best in the trunk
> version
> +of LLVM. Below is a quick summary of downloading and building the
> trunk
> +version. Consult the `Getting Started
> +<http://llvm.org/docs/GettingStarted.html>`_ page for more details
> on setting
> +up LLVM.
>
> #. Checkout LLVM
>
> @@ -60,8 +62,6 @@ which multiplies a ``float`` array by a
>
> .. code-block:: c++
>
> - #include <helper_cuda.h> // for checkCudaErrors
> -
> #include <iostream>
>
> __global__ void axpy(float a, float* x, float* y) {
> @@ -78,25 +78,25 @@ which multiplies a ``float`` array by a
> // Copy input data to device.
> float* device_x;
> float* device_y;
> - checkCudaErrors(cudaMalloc(&device_x, kDataLen *
> sizeof(float)));
> - checkCudaErrors(cudaMalloc(&device_y, kDataLen *
> sizeof(float)));
> - checkCudaErrors(cudaMemcpy(device_x, host_x, kDataLen *
> sizeof(float),
> - cudaMemcpyHostToDevice));
> + cudaMalloc(&device_x, kDataLen * sizeof(float));
> + cudaMalloc(&device_y, kDataLen * sizeof(float));
> + cudaMemcpy(device_x, host_x, kDataLen * sizeof(float),
> + cudaMemcpyHostToDevice);
>
> // Launch the kernel.
> axpy<<<1, kDataLen>>>(a, device_x, device_y);
>
> // Copy output data to host.
> - checkCudaErrors(cudaDeviceSynchronize());
> - checkCudaErrors(cudaMemcpy(host_y, device_y, kDataLen *
> sizeof(float),
> - cudaMemcpyDeviceToHost));
> + cudaDeviceSynchronize();
> + cudaMemcpy(host_y, device_y, kDataLen * sizeof(float),
> + cudaMemcpyDeviceToHost);
>
> // Print the results.
> for (int i = 0; i < kDataLen; ++i) {
> std::cout << "y[" << i << "] = " << host_y[i] << "\n";
> }
>
> - checkCudaErrors(cudaDeviceReset());
> + cudaDeviceReset();
> return 0;
> }
>
> @@ -104,16 +104,20 @@ The command line for compilation is simi
>
> .. code-block:: console
>
> - $ clang++ -o axpy -I<CUDA install path>/samples/common/inc -L<CUDA
> install path>/<lib64 or lib> axpy.cu -lcudart_static -lcuda -ldl
> -lrt -pthread
> + $ clang++ axpy.cu -o axpy --cuda-gpu-arch=<GPU arch> \
> + -L<CUDA install path>/<lib64 or lib> \
> + -lcudart_static -ldl -lrt -pthread
> $ ./axpy
> y[0] = 2
> y[1] = 4
> y[2] = 6
> y[3] = 8
>
> -Note that ``helper_cuda.h`` comes from the CUDA samples, so you need
> the
> -samples installed for this example. ``<CUDA install path>`` is the
> root
> -directory where you installed CUDA SDK, typically
> ``/usr/local/cuda``.
> +``<CUDA install path>`` is the root directory where you installed
> CUDA SDK,
> +typically ``/usr/local/cuda``. ``<GPU arch>`` is `the compute
> capability of
> +your GPU <https://developer.nvidia.com/cuda-gpus>`_. For example, if
> you want
> +to run your program on a GPU with compute capability of 3.5, you
> should specify
> +``--cuda-gpu-arch=sm_35``.
>
> Optimizations
> =============
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>
--
Hal Finkel
Assistant Computational Scientist
Leadership Computing Facility
Argonne National Laboratory
More information about the llvm-commits
mailing list