自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(61)
  • 资源 (1)
  • 收藏
  • 关注

原创 Tensor Core的WMMA API编程入门

与CUDA Core naive不同的是,WMMA需要按照每个warp处理一个矩阵C的WMMA_M * WMMA_N大小的tile的思路来构建,因为Tensor Core的计算层级是warp级别,计算的矩阵元素也是二维的。按照每个线程计算矩阵C中的一个元素来构建naive kernel,首先确定当前线程处理矩阵C的元素坐标,再遍历K并直接从global memory中加载所需A、B矩阵元素到寄存器参与计算,最后将计算结果从寄存器直接写回矩阵C。这个例子不能说简单,只能说技术含量不高,不过我们只是为了对比。

2023-10-13 12:30:59 355

原创 基于C++与CUDA的N卡GPU并行程序——虚幻5渲染视频很牛逼?让我们从底层C++开始自制光线追踪渲染器,并自制高级版《我的世界》

哈喽,带嘎吼.最近5月13日,官方放出了虚幻5的演示视频,据说是可以同屏显示数亿三角形,从而实时渲染出电影级别的画质,其动态光照效果也是极其逼真.

2020-05-24 16:17:55 2037 4

原创 RBM受限玻尔兹曼机的公式推导及代码实现(matlab)

  考虑一组具有mmm个样本的数据集X={x(1),…,x(m)}\mathbb{X}=\{x^{(1)},\dots,x^{(m)}\}X={x(1),…,x(m)},独立地由真实数据生成分布pdata(x)p_{data}(x)pdata​(x)生成。令pmodel(x;θ)p_{model}(x;\theta)pmodel​(x;θ)是一族由θ\thetaθ确定在相同空间上的概率分布,换言之...

2018-11-10 19:29:04 4226 4

原创 短信验证码服务

凭证链接。

2024-03-15 20:46:54 840

原创 网页的用户注册功能

但是希望如果用户没有填写密码,那么页面上会自动阻止并且显示一个提示,表示要填写密码才能操作。如果没有,那么会显示一个错误消息,并阻止表单的提交。如果用户已经输入了密码,那么会继续发送POST请求到注册后端。这样,当用户点击注册按钮时,你的代码会获取用户输入的手机号码和密码,然后发送一个POST请求到/reg后端,请求的body中包含了手机号码和密码。在你的后端代码中,你可以获取这两个值,然后保存到数据库中,作为用户的登录凭证。要实现这个功能,还需要一个能发送短信的服务,例如Twilio或阿里云短信服务。

2024-03-09 17:31:29 752

原创 网页的用户登录功能

此外,需要修改按钮的类型为submit,以便在用户点击按钮时提交表单。这是一个基本的示例,展示了如何修改表单以提交到一个名为/login的后端服务。在实际应用中,需要考虑更多的安全性问题,例如使用HTTPS来保护密码,以及在后端服务中正确地处理密码。这就是一个登录表单,但是它并没有提交到任何地方。可以添加一个后端服务来处理登录请求,然后将表单的提交地址设置为该服务的URL。然后,它处理服务器的响应,如果登录成功,它会更新页面的某个元素。首先要在网页的前端html页面上,创建一个用户的登录表单。

2024-03-09 10:03:46 574

原创 ubuntu安装数据库

注意:记得要定期备份数据库,并确保所有的敏感数据都进行了适当的加密处理。也可以使用sequelize等ORM库使得node.js操作数据库更为方便。然后,为了提高安全性,应该运行MySQL安全安装程序。这将帮助您更改某些默认的,不太安全的设置。就这样,已经在Ubuntu服务器上安装了MySQL并创建了一个用户表单。现在,MySQL已经安装完毕。现在,MySQL 已经在你的 Ubuntu 服务器上安装完毕。

2024-01-21 12:55:05 455 1

原创 AI语音克隆

在这个过程中,有一部分安装包,比如OpenAI的whisper代码包,可能因为网络问题,而无法访问,无法使用pip进行网络安装。可以在其它地方,单独下载好代码包,然后使用pip单独安装本地包。就可以看到语音tts的使用界面,但这只能在本地电脑能看到,如果要在远程的电脑上访问,可以使用cpolar。,如果GPU内存没有12GB,将whisper_size替换为medium或small。如果是从一个训练过的模型,开始继续训练。下载安装github代码库。选择对应的辅助数据包,运行。如果不选择辅助数据包,运行。

2023-11-18 16:05:47 431

原创 cpolar内网穿透

登录cpolar官网后台,点击左侧的验证,查看自己的认证token,之后将token贴在命令行里。1.在linux系统上进行安装coplar。8.登录后台,查看隧道在线状态。6.启动cpolar服务。

2023-11-18 14:36:03 147

原创 CUDA复制测试

  这里主要是测试了内存数据读写操作的几种方式,记录了一些测试结果,对于二维数组(10244)(1024*4)。(1)二维线程格,每个线程对应一个元素。(2)转换为int2类型,线程宽度减半。(3)线程宽度和高度减半,单个线程操作邻近的4个元素。(4)线程宽度和高度减四分之一,单个线程操作邻近的16个元素。(5)线程宽度和高度减半,单个线程操作完一个元素后,跨区域循环。(6)为单个线程处理16个元素,采用表面引用。(7)为单个线程处理64*64个元素,采用表面引用。(8)跨区域循环,单线程

2021-08-07 23:28:21 390

原创 基于纹理缓冲实现OpenGL和CUDA的交互

基于缓冲对象的交互  要实现OpenGL和CUDA交互,最常用便捷的方式就是,在OpenGL中创建缓冲对象,将其注册并绑定到一个内存指针,将这个指针传入CUDA核函数中进行读写。关于这点,可以参考笔者之前的文章------基于C++与CUDA的N卡GPU并行程序——OpenGL图形互操作性。// 创建窗口缓冲int c=1;char *dummy;glutInit( &c, &dummy );glutInitDisplayMode( GLUT_SINGLE | GLUT_RGBA

2021-07-21 16:11:02 990

原创 CUDA的texture纹理

  CUDA数组与设备内存从相同的物理内存池中分配,但是前者为2D和3D做了一个局部优化,图形驱动程序则利用这个布局保存纹理,使硬件在2D或3D元素块上操作,取代了1D寻址。对展示出稀疏访问模式的应用程序,特别是有维度局部性的程序,使用CUDA数组会更好。而对于有常规访问模式的应用程序,没有多少数据的重用,选择使用设备内存指针会更好。  纹理引用是CUDA用来设置纹理硬件解释实际内存内容的对象,有了这个间接层,多个纹理引用可以使用不同的属性,来引用相同的内存。  CUDA运行时和CUDA驱动程序的API

2021-06-10 22:32:26 1885 10

原创 CUDA的内存拷贝

CPU到GPU  在CUDA程序中,将数据从CPU传输到GPU,或者从GPU传输到CPU的时候,需要调用底层的内存拷贝函数。当有很多不同类型的数据的时候,这个过程会非常繁琐。于是,我专门写了个内存拷贝的模板函数,使这个过程变的十分方便。template <typename T> T* valueHostToDevice(T *value, const int &num = 1, bool isDelete = false){ T *devValue; cudaMall

2021-06-07 17:53:04 1898 1

原创 CUDA计时

CPU和GPU异步并发  CUDA内核程序的所有启动都是异步的,CPU通过将命令写入命令缓冲区,来请求启动内核,然后直接返回结果,而不检查GPU的执行进度。内存复制也可以选择异步方式,这使CPU和GPU可以并发执行,也使内存复制和内核处理可以并发执行。CPU和GPU同步  在CUDA程序中,CPU端将命令写到命令缓冲区中,GPU端会依次读取命令缓冲区并执行任务,一般的程序中,GPU需要给CPU汇报任务的工作进度。命令缓冲区和“同步信息位置”都位于锁页主机内存上,所以CPU和GPU都能同时读写这些数据。

2021-06-04 21:15:20 1016

原创 OpengGL基于glut创建窗口绘图

  在OpenGL的渲染绘图中,可以基于glut、glew等方式,直接在创建桌面上创建一个窗口,并进行绘图。也可以使用EGL的方式来创建渲染窗口,同时EGL也可以直接支持无屏模式的渲染窗口。在之前的文章中讲了如何使用EGL创建无屏渲染窗口,在这里记录一下使用glut创建可视化渲染窗口。#include <GL/glut.h> void render(){ glClear(GL_COLOR_BUFFER_BIT); glBegin(GL_TRIANGLES); gl

2021-05-11 13:57:50 782 2

原创 OpenGL和CUDA互操作的显卡驱动问题

  使用OpenGL进行图形渲染并显示出来,然后使用CUDA进行计算,将计算结果传输到OpenGL的渲染管线中。在这里可能会遇到一个问题,代码执行到cudaGraphicsGLRegisterBuffer()函数会出错,CUDA的API接口会抛出一个错误代码999,这表示是未知的错误。  然后试着,添加一段代码 cudaDeviceProp prop; int dev; memset( &prop, 0, sizeof( cudaDeviceProp ) ); p

2021-04-01 14:21:17 1641 1

原创 《Fast Hierarchical Importance Sampling with Blue Noise Properties》摘要

图像采样点集  给定一个二维区域DDD上的重要性密度III,在这个区域上找出一个采样的点集,使其局部密度正比于重要密度III。如下图所示,图片中亮的区域多采点,暗的区域少采点。  这篇文章,提出了一种新方法,可以有效地生成给定重要性密度的2D区域上的采样模式.Penrose切片被细分为多个层次,从而创建了足够数量的采样点。 这些点使用斐波那契数系统进行编号,并且这些数字用于针对重要性密度的局部值对样本进行阈值处理。 使用预先计算的校正向量用于改善采样模式的光谱特性。 该技术是确定性的,并且非常快。 采样

2021-03-26 21:56:13 344

原创 基于linux系统的OpenGL环境(四)——红宝书简单示例

创建缓存  在OpenGL中绘制模型图像,首先要创建并分配缓存区,然后将模型的顶点数据传入到缓存区中。GLuint vao, vbo[2];// 设置顶点缓存glGenVertexArrays(1, &vao);glBindVertexArray(vao);// 顶点缓存数据glGenBuffers(2, vbo);// 分配OpenGL缓存空间long unsigned int size_array = sizeof(GLfloat) * num * 4;// 顶点数据1gl

2020-12-29 20:53:30 512 2

原创 基于linux系统的OpenGL环境(三)——运行红宝书上的示例程序

第9版OpenGL红宝书示例程序绘制三角形#include <stdio.h>#include <iostream>#include <malloc.h>#include <EGL/egl.h>#include <EGL/eglext.h>#include <GL/gl.h>#include <GL/glext.h>#define EGL_EGLEXT_PROTOTYPES#include "OpenG

2020-12-01 17:38:47 987

原创 基于linux系统的OpenGL环境(二)

OpenGL函数文档远程显示设备  继续上一篇,使用EGL创建surface之后,就可以进行编译和执行了# 编译链接gcc -o example example.c -lEGL# 执行./example如果程序马上执行结束,就是属于正常的,如果程序卡在那里不动也没有结束,就说明还有问题,可能是在寻找显示设备DISPLAY,但是寻找不到就卡在那里。EGL创建的surface会绑定到一个默认显示设备上,而linux中可以通过设置DISPLAY变量来指定显示设备,同时也可以将显示设备设置为一个远程

2020-11-27 22:15:02 1186

原创 基于linux系统的OpenGL环境

简介相关资料有khronos.org/eglnvidia developer blogOpenGL without X.org in linuxPyOpenGL headless rendering  linux系统对于图形渲染的支持是非常复杂繁琐的,对于初学者,人都会看晕了,这其中涉及很多东西如GL,EGL,GLX,WGL,AGL,XGL,XGLX,GLUT,GLFW,GL3W,GLEW,GLAD,GLU,GLM,X11,Xming,Xmanager,Xserver,wayland,Vulka

2020-11-26 23:18:36 3827

原创 PyOpenGL帧缓存

安装python -m pip install PyOpenGL PyOpenGL_accelerate -i http://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com文档资料PyOpenGL在Pypi的地址PyOpenGL开发文档PyOpenGL在python上与C的部分区别GL开发文档GLU开发文档  参考书有《OpenGL Programming Guide》,俗称“红宝书”。离屏渲染  刚开始

2020-11-23 16:23:01 722 1

原创 近似推断

生成模型中的推断  模型分为生成模型和判别模型,生成模型能够随机生成观测数据,同时对观测值XXX和标注值YYY进行概率建模,从而计算出P(X,Y)P(X,Y)P(X,Y),而判别模型只能建立从观测值XXX到标注值YYY之间的映射,从而计算出P(Y∣X)P(Y|X)P(Y∣X)。在深度学习的生成模型中,一般会把观测值xxx称为可见变量vvv,将标注值yyy称为不可见的隐变量hhh。  许多概率生成模型为了计算p(v,h)p(v,h)p(v,h),需要采用一些训练方法。对于采用极大似然的训练方法,此过程中必

2020-11-18 20:18:36 614

原创 torch读取数据

  使用torchvision.datasets.ImageFolder来读取图片torchvision.datasets.ImageFolder(root="root folder path", [transform, target_transform])root : 指定图片存储的路径,在下面的例子中是’./data/dogcat_2’transform: 一个函数,原始图片作为输入,返回一个转换后的图片。target_transform - 一个函数,输入为target,输出对其的转换。例

2020-11-11 14:46:59 1358 2

原创 基于python与CUDA的N卡GPU并行程序——直线和三角形的交点

  设直线过点m,直线向量为VL,设三角形平面过点n,平面法向量为VP,两者的交点为O。直线方程为{mx+VLx⋅t=xmy+VLy⋅t=ymz+VLz⋅t=z\left\{\begin{aligned}\\m_x+VL_x\cdot t=x\\m_y+VL_y\cdot t=y\\m_z+VL_z\cdot t=z\end{aligned}\right.⎩⎪⎨⎪⎧​mx​+VLx​⋅t=xmy​+VLy​⋅t=ymz​+VLz​⋅t=z​平面方程为VPx⋅(x−nx)+VPy⋅(y−ny)

2020-10-23 18:50:57 450

原创 基于python与CUDA的N卡GPU并行程序——使用taichi语言实现三角形光栅化算法

  在计算机图形学中,需要扫描三角形以进行光栅化。比如渲染引擎的计算过程,需要计算从每个像素发出去的光线是否能够碰撞到某个三角形面片,这个时候需要将3D的三角形,按照几何透视原理,投影到2D的光源空间上,然后扫描每个三角形。重心坐标系插值算法  Barycentric Coordinates即重心坐标系插值算法,能够计算2D平面上的任意一点到三个顶点的相对位置,然后依次判断这个点是否在三角形内部,如果在三角形内部,就给这个像素图上颜色,这时就可以完成三角形光栅化。  已知三角形的三个顶点A,B,C,设

2020-10-15 20:19:12 1016

原创 基于python与CUDA的N卡GPU并行程序——taichi语言笔记(二)

基于结构节点的数据布局  自定义不同的数据结构的布局,可以提升缓存命中率,提升运行速度。有好几种Snode,如root,dense,pointer,bitmasked,dynamic,place。声明不同大小的张量# 零维张量x = ti.field(ti.f32)ti.root.place(x)# 相当于:x = ti.field(ti.f32, shape=())# 一维张量x = ti.field(ti.f32)ti.root.dense(ti.i, 3).place(x)#

2020-10-13 17:48:39 699 1

原创 基于python与CUDA的N卡GPU并行程序——taichi语言笔记

  如果要做并行程序,就要使用CUDA,这个原本是要用C语言来写的,但是C语言的开发稍微有点麻烦,经常出现内存报错之类的bug,如果可以使用语法更加简单的python语言来开发,就会更加快捷方便,这时可以有一个选择,就是使用taichi语言,这里记录一些零散的笔记。  ...

2020-10-13 12:00:30 2144

原创 MTCNN+FaceNet人脸识别

人脸识别简介  人脸验证是验证一个人的图片是否对应到一个人的名字ID,如果把这个方法应用到人脸识别,如果验证一个人脸的错误率是1%,那么在100个人的数据库上进行识别,其总体错误率就会很高。所以,如果要在大型数据库上识别每个人,并且错误率比较低,那么人脸验证所需要的达到的精度需要很高才行,比如99.99%,这是比较困难的。  实现人脸验证的一个难点在于需要解决One-Shot一次学习问题,这意味着在数据库中,只需要提供一张照片,就能在任何场景下识别出这个人。而通常的深度学习分类方法,在只有一个训练样例时

2020-08-19 17:15:53 1068

原创 基于VimPlus配置vim编辑器环境

  首先可以在~/.vim/.vimrc中设置vim编辑器的一些基本属性" 基本配置" 设置行号set number" 语法高亮。自动识别代码,使用多种颜色表示syntax enable" 选择颜色主题(已经下载好并放到~/.vim/colors文件夹下) colorscheme badwolf" 支持使用鼠标set mouse=a" 按下回车键后,下一行的缩进会自动跟上一行的缩进保持一致set autoindent" 按下Tab键后,vim显示的空格数set tabstop=4

2020-07-30 20:30:54 639 1

原创 安装gitbook+fastapi

如何在服务器上安装fastapi  首先在conda虚拟环境下安装fastapi包python -m pip install fastapi uvicorn1之后创建一个脚本testWeb.pyfrom typing import Optionalfrom fastapi import FastAPIapp = FastAPI()@app.get("/")def read_root(): return {"Hello": "World"}@app.get("/item

2020-07-26 17:49:36 429

原创 pytorch简单示例

中文文档简单三层全连接网络import torch # N is batch size; D_in is input dimension;# H is hidden dimension; D_out is output dimension.N, D_in, H, D_out = 64, 1000, 100, 10 # Create random Tensors to hold inputs and outputs.x = torch.randn(N, D_in)y = torch.ran

2020-07-02 13:58:19 2613

原创 基于C++与CUDA的N卡GPU并行程序——在python中使用pyCUDA编写GPU程序

  官网文档简单示例导入包import pycuda.autoinitimport pycuda.driver as drvimport numpyfrom pycuda.compiler import SourceModule初始化数据变量a = numpy.random.randn(400).astype(numpy.float32)b = numpy.random.randn(400).astype(numpy.float32)dest = numpy.zeros_like(a)

2020-06-26 16:15:21 824

原创 基于C++与CUDA的N卡GPU并行程序——cuBLAS简介

  cuBLAS官方文档  为了使用cuBLAS库,只需要在C代码中导入库文件即可include "cublas.h" #旧版include "cublas_v2.h" #新版编译代码文件时需要导入链接库nvcc myCublasApp.c -lcublas -o myCublasAppnvcc myCublasApp.c -lcublas_static -lculibos -o myCublasApp库文件中有三个API集合,分别是cuBLAS,cuBLASXt和cu

2020-06-25 14:57:55 2456

原创 基于C++与CUDA的N卡GPU并行程序——在python中使用numba库编写GPU程序

文档  numba文档  nvidia论坛文档  numba官网简介解决numba报错  在python中使用numba编写CUDA程序时会有一个报错NvvmSupportError: libNVVM cannot be found. Do conda install cudatoolkit: 这一般是关于CUDA的环境变量没有识别出来,所以需要在bashrc或/etc/profile中加入环境变量 export CUDA_HOME=/usr/local/cuda expor

2020-06-19 08:51:05 1255

原创 基于C++与CUDA的N卡GPU并行程序——OpenGL图形互操作性

图形互操作性的极简框架示例  GPU的成功要归功于它能实时计算复杂的渲染任务,同时系统的其他部分还可以执行其他的任务,这就带来了一个显而易见的问题:能否在同一个应用程序中GPU既执行渲染计算,又执行通用计算?如果要渲染的图像依赖通用计算的结果,那么该如何处理?或者在已经渲染的帧上执行某种图像处理,又该如何实现?  在通用计算和渲染模式之间存在这种互操作,CUDA C应用程序可以无缝地与Open...

2020-05-04 22:01:08 1955 2

原创 基于C++与CUDA的N卡GPU并行程序——内存操作

常量内存  有时,计算速度的性能瓶颈不在于数学计算速度,而是内存带宽.硬件提供了64kb或者更多的常量内存,用于保存在核函数执行期间不会发生变化的数据,在有些情况中使用常量内存来替换全局内存,能有效减少内存带宽.如果是全局内存,其声明方式很简单,如下所示Sphere *s;//Sphere是某个自己定义的类,s是声明的类对象指针变量如果是常量内存,声明方法与共享内存是类似的,常量内存是在前...

2020-04-29 18:16:59 1129

原创 SimPy(四)

""" Initial test of the WFQ queueing discipline implementation. Copyright 2014 Dr. Greg M. Bernstein We base our parameter explorations on the first source. We set the output rate of the...

2019-11-05 09:26:59 446

原创 SimPy(三)

SimComponents包在这里直接将开源仿真包下载粘贴如下""" A bit more detailed set of components to use in packet switching queueing experiments. Copyright 2014 Greg M. Bernstein Released under the MIT lice...

2019-11-05 09:19:54 867 2

原创 SimPy(二)

Shared Resources共享资源在进程交互中可能需要用到,一系列进程进行排队以使用某种资源,比如多个客户等待银行服务,多辆汽车等待通过缴费站,仓库货物的运输消耗和通信网络的数据包转发等.Resources,可以由有限数量的过程一次使用的进程(例如,具有有限数量的燃油泵的加油站).Containers,用于模拟同质,无差别主体的生产和消费的资源,可以是连续的(如水)或离散的(如苹果)....

2019-11-05 09:17:35 1977

lodepng-master.zip

别人写的C++头文件,能够支持导入png图片,只需要把里面的.cpp和.h两个文件放进自己的代码目录中,就能够使用了,也不需要使用第三方库之类的

2020-05-24

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除