WSL2快速搭建CUDA体验环境
前言 Windows11或Windows 10 21H2版本以上操作系统,具有 Nvidia 的 GPU,且已安装显卡驱动 安装了WSL2,且准备好了Ubuntu或其他Linux操作系统 之后的操作都将基于WSL2中的Ubuntu环境。 环境验证打开Windows的Powershell,输入nvidia-smi检查自己的显卡驱动、CUDA支持。 注意左上角的 CUDA version 12.6...
CUDA开始的GPU编程-第五章
第五章:数学运算经典案例,并行地求 sin 值终于可以在GPU上干点正事了(bushi 就让我们在 GPU 上并行地计算从 sin(0) 到 sin(65535) 的值,并填入到数组 arr 中。 123456789101112131415161718192021222324252627282930#include <cuda_runtime.h>#include <cstdio>#include <vector>#include "CudaAllocator.h" // 封装刚才的内存分配器#include...
CUDA开始的GPU编程-第四章
第四章:C++封装GPU上的数组std::vector的秘密:第二模板参数你知道吗?std::vector 作为模板类,其实有两个模板参数: 1std::vector<T, AllocatorT> 那为什么我们平时只用了 std::vector 呢?因为第二个参数默认是 std::allocator。 也就是 std::vector 等价于 std::vector<T, std::allocator>。 std::allocator 的功能是负责分配和释放内存,初始化 T 对象等等。 它具有如下几个成员函数: 123T *allocate(size_t...
CUDA开始的GPU编程-第三章
第三章:GPU上的数组分配一个数组1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556#include <cuda_runtime.h>#include <cstdio>#include "helper_cuda.h"__global__ void kernel(int *arr, int n) { for (int i = 0; i < n; i++) { ...
CUDA开始的GPU编程-第二章
第二章:内存管理怎样从核函数返回数据?我们试着把 kernel 的返回类型声明为 int,试图从 GPU 返回数据到 CPU。 123456789101112#include <cuda_runtime.h>#include <cstdio>__global__ int kernel() { return 42; }int main() { int ret = kernel<<<1, 1>>>(); cudaDeviceSynchronize(); ...
CUDA开始的GPU编程-第一章
第一章:线程与板块三重尖括号里的数字刚刚说了 CUDA 的核函数调用时需要用 kernel<<<1, 1>>>() 这种奇怪的语法,这里面的数字代表什么意思呢? 不妨把 <<<1, 1>>> 改成 <<<1, 3>>> 试试看。你会看到 Hello, world! 打印了三遍! 123456789101112131415#include <cstdio>#include <cuda_runtime.h>__global__ void...
CUDA开始的GPU编程-第0章
CUDA开始的GPU编程前置条件: 熟悉C/C++编程、熟悉STL、函数模板等 Nvidia GTX900及以上显卡、CUDA 11及以上 CMake 3.18及以上 由于文本编辑器不持支CUDA代码块,文中CUDA代码将使用cpp代码块进行高亮显示,请注意区分。 在开始之前,我想提醒读者,这篇博客将以工程应用的思路为主,不会深入探讨CUDA的底层原理。我们关注实际的使用案例和实践技巧。未来,我会逐步更新更为详尽的内容,敬请期待! 第0章:Hello, world from GPU!CMake中启用CUDA支持123456789#...
全面理解STL-set系列容器与迭代器分类
迭代器的分类 迭代器类型 描述 提供的运算符重载 具有此迭代器的容器 相应的 C++20...
全面理解STL-前言
C++ 标准模板库(Standard Template Library,STL)是一套功能强大的 C++ 模板类和函数的集合,它提供了一系列通用的、可复用的算法和数据结构。 STL 的设计基于泛型编程,这意味着使用模板可以编写出独立于任何特定数据类型的代码。 STL 分为多个组件,包括容器(Containers)、迭代器(Iterators)、算法(Algorithms)、函数对象(Function Objects)和适配器(Adapters)等。 使用 STL 的好处: 代码复用:STL 提供了大量的通用数据结构和算法,可以减少重复编写代码的工作。 性能优化:STL...
全面理解STL-vector容器与迭代器入门
vector容器构造显式构造指定一个参数 explicit vector(size_t n)123456#include <vector>using namespace std;int main(){ vector<int> a; return 0; vector...