ubuntu安装pyCUDA

0. 写在前面

安装环境:ubuntu18.04(16和18差不多,但是18太爽了)和python3(具体版本忘了,应该是3.6)

参考链接:参考了验证程序

1. 安装pyCUDA之前必须安装CUDA

    参考本人上一个博客

2.安装pyCUDA

    首先用pip3安装一般服务器会超时,这个时候也可以用清华源或者其他国内源安装,标准命令是"pip3 install pycuda",但是这种安装方式我没试过。

   如果用sudo apt install python3-pycuda会发现这个包并不是最新包,除非降低显卡驱动版本,反正我不愿意。

   以下是本人实测的方法。

   pyCUDA各版本的变化可以参考这个,最新的编译包贴在,python.org上也有,github有各版本压缩包,安装步骤参考这个的第一步和第三步(如下图),第二步忽略(一般都是安装numpy了的),注意对于python3第三步中的"python configure.py ..."改成"python3 ..."

 

3. 检验pyCUDA安装

    新建py脚本如下

import pycuda
import pycuda.driver as drv
drv.init()
print('CUDA device query (PyCUDA version) \n')
print('Detected {} CUDA Capable device(s) \n'.format(drv.Device.count()))
for i in range(drv.Device.count()):
    
    gpu_device = drv.Device(i)
    print('Device {}: {}'.format( i, gpu_device.name() ) )
    compute_capability = float( '%d.%d' % gpu_device.compute_capability() )
    print('\t Compute Capability: {}'.format(compute_capability))
    print('\t Total Memory: {} megabytes'.format(gpu_device.total_memory()//(1024**2)))
    
    # The following will give us all remaining device attributes as seen 
    # in the original deviceQuery.
    # We set up a dictionary as such so that we can easily index
    # the values using a string descriptor.
    
    device_attributes_tuples = gpu_device.get_attributes().items() 
    device_attributes = {}
    
    for k, v in device_attributes_tuples:
        device_attributes[str(k)] = v
    
    num_mp = device_attributes['MULTIPROCESSOR_COUNT']
    
    # Cores per multiprocessor is not reported by the GPU!  
    # We must use a lookup table based on compute capability.
    # See the following:
    # http://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#compute-capabilities
    
    cuda_cores_per_mp = { 5.0 : 128, 5.1 : 128, 5.2 : 128, 6.0 : 64, 6.1 : 128, 6.2 : 128}[compute_capability]
    
    print('\t ({}) Multiprocessors, ({}) CUDA Cores / Multiprocessor: {} CUDA Cores'.format(num_mp, cuda_cores_per_mp, num_mp*cuda_cores_per_mp))
    
    device_attributes.pop('MULTIPROCESSOR_COUNT')
    
    for k in device_attributes.keys():
        print('\t {}: {}'.format(k, device_attributes[k]))

    应该得到输出结果如下

CUDA device query (PyCUDA version) 

Detected 1 CUDA Capable device(s) 

Device 0: GeForce GTX 1060
	 Compute Capability: 6.1
	 Total Memory: 6078 megabytes
	 (10) Multiprocessors, (128) CUDA Cores / Multiprocessor: 1280 CUDA Cores
	 ASYNC_ENGINE_COUNT: 2
	 CAN_MAP_HOST_MEMORY: 1
	 CLOCK_RATE: 1733000
	 COMPUTE_CAPABILITY_MAJOR: 6
	 COMPUTE_CAPABILITY_MINOR: 1
	 COMPUTE_MODE: DEFAULT
	 CONCURRENT_KERNELS: 1
	 ....
	 ....
	 TEXTURE_PITCH_ALIGNMENT: 32
	 TOTAL_CONSTANT_MEMORY: 65536
	 UNIFIED_ADDRESSING: 1
	 WARP_SIZE: 32

 

安装PyCUDA需要在Ubuntu系统上执行以下步骤: 1. 首先,确保你的系统已经安装了NVIDIA显卡驱动程序。你可以通过运行以下命令来检查驱动程序是否已经安装: ``` nvidia-smi ``` 如果该命令能够正确显示显卡信息,则说明驱动程序已经安装。 2. 接下来,安装CUDA Toolkit。PyCUDA需要与CUDA Toolkit一起使用。你可以从NVIDIA官方网站下载适合你的系统版本的CUDA Toolkit,并按照官方文档提供的步骤进行安装。 3. 安装PyCUDA。在终端中运行以下命令来安装PyCUDA: ``` pip install pycuda ``` 4. 安装完成后,你可以在Python脚本中导入PyCUDA并开始使用它了。以下是一个简单的示例代码: ```python import pycuda.driver as cuda import pycuda.autoinit from pycuda.compiler import SourceModule # 编写CUDA核函数 mod = SourceModule(""" __global__ void multiply_them(float *dest, float *a, float *b) { const int i = threadIdx.x; dest[i] = a[i] * b[i]; } """) # 创建输入数据 a = numpy.random.randn(256).astype(numpy.float32) b = numpy.random.randn(256).astype(numpy.float32) # 在GPU上分配内存 dest = numpy.zeros_like(a) dest_gpu = cuda.mem_alloc(dest.nbytes) a_gpu = cuda.mem_alloc(a.nbytes) b_gpu = cuda.mem_alloc(b.nbytes) # 将数据传输到GPU内存 cuda.memcpy_htod(a_gpu, a) cuda.memcpy_htod(b_gpu, b) # 调用CUDA核函数 multiply_them = mod.get_function("multiply_them") multiply_them(dest_gpu, a_gpu, b_gpu, block=(256, 1, 1)) # 将结果从GPU内存传输回主机内存 cuda.memcpy_dtoh(dest, dest_gpu) # 打印结果 print(dest) ``` 希望以上步骤对你有所帮助!
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值