IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> vscode编译cuda -> 正文阅读

[Python知识库]vscode编译cuda

千辛万苦,竟然还是用命令行编译通过的。
源程序:

#include "cuda_runtime.h"
 
#include "device_launch_parameters.h"
 
#include <stdio.h>
 
void addWithCuda(int *c, const int *a, const int *b, size_t size);
 
__global__ void addKernel(int *c, const int *a, const int *b)
 
{
 
    int i = threadIdx.x;
 
    c[i] = a[i] + b[i];
 
}
 
int main()
 
{
 
    const int arraySize = 5;
 
    const int a[arraySize] = { 1, 2, 3, 4, 5 };
 
    const int b[arraySize] = { 10, 20, 30, 40, 50 };
 
    int c[arraySize] = { 0 };
 
    // Add vectors in parallel.
 
    addWithCuda(c, a, b, arraySize);
 
    printf("{1,2,3,4,5} + {10,20,30,40,50} = {%d,%d,%d,%d,%d}\n",
 
        c[0], c[1], c[2], c[3], c[4]);
 
    // cudaThreadExit must be called before exiting in order for profiling and
 
    // tracing tools such as Nsight and Visual Profiler to show complete traces.
 
    cudaThreadExit();
 
    return 0;
 
}
 
// Helper function for using CUDA to add vectors in parallel.
 
void addWithCuda(int *c, const int *a, const int *b, size_t size)
 
{
 
    int *dev_a = 0;
 
    int *dev_b = 0;
 
    int *dev_c = 0;
 
    // Choose which GPU to run on, change this on a multi-GPU system.
 
    cudaSetDevice(0);
 
    // Allocate GPU buffers for three vectors (two input, one output)    .
 
    cudaMalloc((void**)&dev_c, size * sizeof(int));
 
    cudaMalloc((void**)&dev_a, size * sizeof(int));
 
    cudaMalloc((void**)&dev_b, size * sizeof(int));
 
    // Copy input vectors from host memory to GPU buffers.
 
    cudaMemcpy(dev_a, a, size * sizeof(int), cudaMemcpyHostToDevice);
 
    cudaMemcpy(dev_b, b, size * sizeof(int), cudaMemcpyHostToDevice);
 
    // Launch a kernel on the GPU with one thread for each element.
 
    addKernel<<<1, size>>>(dev_c, dev_a, dev_b);
 
    // cudaThreadSynchronize waits for the kernel to finish, and returns
 
    // any errors encountered during the launch.
 
    cudaThreadSynchronize();
 
    // Copy output vector from GPU buffer to host memory.
 
    cudaMemcpy(c, dev_c, size * sizeof(int), cudaMemcpyDeviceToHost);
 
    cudaFree(dev_c);
 
    cudaFree(dev_a);
 
    cudaFree(dev_b);
 
}

编译命令

nvcc -o kernel -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2\include" kernel.cu

执行生成的可执行程序:

./kernel.exe

终端输出:

(base) PS E:\document\vscode\cuda> .\kernel.exe
{1,2,3,4,5} + {10,20,30,40,50} = {11,22,33,44,55}

好奇地查看了一下依赖:

(base) PS E:\document\vscode\cuda> dumpbin /dependents .\kernel.exe
Microsoft (R) COFF/PE Dumper Version 14.00.24215.1
Copyright (C) Microsoft Corporation.  All rights reserved.


Dump of file .\kernel.exe

File Type: EXECUTABLE IMAGE

  Image has the following dependencies:

    KERNEL32.dll

  Summary

        4000 .data
        1000 .gfids
        1000 .nvFatBi
        1000 .nv_fatb
        2000 .pdata
       1A000 .rdata
        1000 .reloc
       26000 .text
        1000 .tls

竟然没有依赖cuda动态库,出乎意料。

参考:Windows下 VSCode配置cuda编译环境

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-07-17 11:52:21  更:2021-07-17 11:53:35 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 1:33:24-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码