title: pycuda "nvcc fatal : Cannot find compiler 'cl.exe' in PATH"
body: <p>OS: win10</p>
  
  <p>VS: visual stadio2015 64bit</p>
  
  <p>CUDA: CUDA8.0</p>
  
  <p>python: python2.7.12 64bit  (pycuda)</p>
  
  <p>I followed this website,
  <a href="https://documen.tician.de/pycuda/tutorial.html#getting-started" rel="nofollow noreferrer">https://documen.tician.de/pycuda/tutorial.html#getting-started</a></p>
  
  <pre><code>import  pycuda.driver as cuda
  import pycuda.autoinit
  from pycuda.compiler import SourceModule
  
  import numpy
  
  a = numpy.random.randn(4,4)
  a = a.astype(numpy.float32)
  a_gpu = cuda.mem_alloc(a.nbytes)
  cuda.memcpy_htod(a_gpu,a)#transfer the data to the GPU
  
  #executing a kernel
  #function: write code to double each entry in a_gpu.
  #we write the corresponding CUDA C code, and feed it into the constructor of pycuda.compiler.SourceModule
  mod = SourceModule("""
      __global__ void doublify(float *a)
      {
          int idx = threadIdx.x + threadIdx.y*4;
          a[idx] *= 2;
      }
      """)
  
  #If there aren’t any errors, the code is now compiled and loaded onto the device. We find a reference to our pycuda.driver.Function and call it, specifying a_gpu as the argument, and a block size of 4x4:
  func = mod.get_function("doublify")
  func(a_gpu, block=(4,4,1))
  
  #Finally, we fetch the data back from the GPU and display it, together with the original a:
  a_doubled = numpy.empty_like(a)
  cuda.memcpy_dtoh(a_doubled, a_gpu)
  print a_doubled
  print a
  </code></pre>
  
  <p>but,failed with the error:</p>
  
  <pre><code>Traceback (most recent call last):
    File "G:/myworkspace/python2.7/cuda/test.py", line 24, in &lt;module&gt;
      """)
    File "D:\python2.7\lib\site-packages\pycuda\compiler.py", line 265, in __init__
      arch, code, cache_dir, include_dirs)
    File "D:\python2.7\lib\site-packages\pycuda\compiler.py", line 255, in compile
      return compile_plain(source, options, keep, nvcc, cache_dir, target)
    File "D:\python2.7\lib\site-packages\pycuda\compiler.py", line 137, in compile_plain
      stderr=stderr.decode("utf-8", "replace"))
  CompileError: nvcc compilation of c:\users\gl\appdata\local\temp\tmp8poxqp\kernel.cu failed
  [command: nvcc --cubin -arch sm_50 -m64 -Id:\python2.7\lib\site-packages\pycuda\cuda kernel.cu]
  [stdout:
  nvcc fatal   : Cannot find compiler 'cl.exe' in PATH
  
  ]
  </code></pre>
  
  <p>Someone said to add the dir of cl.exe to environment. I did, and the error is the same. I'm new for CUDA. How could I solve this problem? Some advice?</p>
  
  <p>I did as @citizenSNIPS adviced:</p>
  
  <p>add the path to cl.exe, D:\vs2015\VC\bin.</p>
  
  <p>INCLUDE = C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt.</p>
  
  <p>LIB = C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10240.0\ucrt\x64(I can't find C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10240.0\um\x64 in my computer).</p>
  
  <p>There had a new error as follow:</p>
  
  <pre><code>raceback (most recent call last):
    File "G:\myworkspace\python2.7\cuda\test.py", line 24, in &lt;module&gt;
      """)
    File "D:\python2.7\lib\site-packages\pycuda\compiler.py", line 265, in __init__
      arch, code, cache_dir, include_dirs)
    File "D:\python2.7\lib\site-packages\pycuda\compiler.py", line 255, in compile
      return compile_plain(source, options, keep, nvcc, cache_dir, target)
    File "D:\python2.7\lib\site-packages\pycuda\compiler.py", line 147, in compile_plain
      + (stdout+stderr).decode("utf-8", "replace"), stacklevel=4)
    File "D:\python2.7\lib\idlelib\run.py", line 36, in idle_showwarning_subproc
      message, category, filename, lineno, line))
    File "D:\python2.7\lib\idlelib\PyShell.py", line 65, in idle_formatwarning
      s += "%s: %s\n" % (category.__name__, message)
  UnicodeEncodeError: 'ascii' codec can't encode characters in position 147-168: ordinal not in range(128)
  </code></pre>
  
  <p>now I'm working for this problem, maybe it's because I did not add C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10240.0\um\x64?</p>