当前位置: 首页 > news >正文

门户子网站建设申请丰台网站关键词优化

门户子网站建设申请,丰台网站关键词优化,专业找工作网站下载,分类网站营销作者#xff1a;翟天保Steven 版权声明#xff1a;著作权归作者所有#xff0c;商业转载请联系作者获得授权#xff0c;非商业转载请注明出处 实现原理 atomicMax和 atomicMin是 CUDA 中的原子操作#xff0c;用于在并行计算中安全地更新共享变量的最大值和最小值。它们确…作者翟天保Steven 版权声明著作权归作者所有商业转载请联系作者获得授权非商业转载请注明出处 实现原理 atomicMax和 atomicMin是 CUDA 中的原子操作用于在并行计算中安全地更新共享变量的最大值和最小值。它们确保在多线程环境中多个线程对同一个变量的访问不会导致数据竞争。使用 atomicMax可以在一个线程中比较当前值与新值并在新值更大时更新而 atomicMin则是用于比较和更新最小值。这些操作对于需要从多个线程中汇总结果的应用至关重要能够确保最终结果的准确性。 本文将通过一个实战案例进行atomic求最值的展示。 注意本文案例基于OpenCV实现因为我工作围绕各类图像展开这样方便些但是对CUDA而言核心部分与OpenCV无关可根据自身场景和数据结构进行更改。 C测试代码 ImageProcessing.cuh #pragma once #include cuda_runtime.h #include iostream #include vector #include opencv2/opencv.hpp #include device_launch_parameters.husing namespace cv; using namespace std;#define TILE_WIDTH 16// 预准备过程 void warmupCUDA();// 图像最值计算-CPU void calcMaxMin_CPU(cv::Mat input, uchar maxV, uchar minV);// 图像最值计算-GPU void calcMaxMin_GPU(cv::Mat input, uchar maxV, uchar minV);ImageProcessing.cu #include ImageProcessing.cuh// 预准备过程 void warmupCUDA() {float* dummy_data;cudaMalloc((void**)dummy_data, sizeof(float));cudaFree(dummy_data); }// 图像最值计算-CPU void calcMaxMin_CPU(cv::Mat input, uchar maxV, uchar minV) {int row input.rows;int col input.cols;// 初始化最值maxV 0;minV 255;for (int i 0; i row; i){for (int j 0; j col; j){if (input.atuchar(i, j) maxV){maxV input.atuchar(i, j);}if (input.atuchar(i, j) minV){minV input.atuchar(i, j);}}} }// 获取最大最小值核函数 __global__ void getMaxMinValue_CUDA(uchar* inputImage, int width, int height, int *maxV, int *minV) {int row blockIdx.y * blockDim.y threadIdx.y;int col blockIdx.x * blockDim.x threadIdx.x;if (row height col width){atomicMax(maxV, int(inputImage[row * width col]));atomicMin(minV, int(inputImage[row * width col]));} }// 图像最值计算-GPU void calcMaxMin_GPU(cv::Mat input, uchar maxV, uchar minV) {int row input.rows;int col input.cols;// 定义计时器float spendtime 0.0f;cudaEvent_t start, end;cudaEventCreate(start);cudaEventCreate(end);// 分配GPU内存 uchar* d_inputImage;cudaMalloc(d_inputImage, row * col * sizeof(uchar));// 将输入图像数据从主机内存复制到GPU内存cudaMemcpy(d_inputImage, input.data, row * col * sizeof(uchar), cudaMemcpyHostToDevice);// 计算块和线程的大小dim3 blockSize(TILE_WIDTH, TILE_WIDTH);dim3 gridSize((col blockSize.x - 1) / blockSize.x, (row blockSize.y - 1) / blockSize.y);// 求最值int h_maxValue 0;int h_minValue 255;int *d_maxValue;int *d_minValue;cudaMalloc((void**)d_maxValue, sizeof(int));cudaMalloc((void**)d_minValue, sizeof(int));cudaMemcpy(d_maxValue, h_maxValue, sizeof(int), cudaMemcpyHostToDevice);cudaMemcpy(d_minValue, h_minValue, sizeof(int), cudaMemcpyHostToDevice);getMaxMinValue_CUDA gridSize, blockSize (d_inputImage, col, row, d_maxValue, d_minValue);cudaMemcpy(h_maxValue, d_maxValue, sizeof(int), cudaMemcpyDeviceToHost);cudaMemcpy(h_minValue, d_minValue, sizeof(int), cudaMemcpyDeviceToHost);maxV uchar(h_maxValue);minV uchar(h_minValue); } main.cpp #include ImageProcessing.cuhvoid main() {// 预准备warmupCUDA();cout calcMaxMin test begin. endl;// 加载cv::Mat src imread(test pic/test5.jpg, 0);// 调整数据区间cv::Mat src2;cv::normalize(src, src2, 20, 230, NORM_MINMAX);// CPU版本clock_t s1, e1;s1 clock();uchar maxV1, minV1;calcMaxMin_CPU(src2, maxV1, minV1);e1 clock();cout CPU time: double(e1 - s1) ms endl;cout maxV1: int(maxV1) endl;cout minV1: int(minV1) endl;// GPU版本clock_t s2, e2;s2 clock();uchar maxV2, minV2;calcMaxMin_GPU(src2, maxV2, minV2);e2 clock();cout GPU time: double(e2 - s2) ms endl;cout maxV2: int(maxV2) endl;cout minV2: int(minV2) endl;cout calcMaxMin test end. endl;} 测试效果  在本文案例中我通过归一化函数将图像的最值设为20和230所以验证功能是否正确只需要判断下函数执行完输出的最值是不是20和230即可。速度方面CUDA也是很快的我原以为这种简单计算CPU会更有优势。 该功能相对简单但也很常用。后续我会写一篇关于归一化的CUDA文章归一化中很重要的一部分就是确认最值。 如果函数有什么可以改进完善的地方非常欢迎大家指出一同进步何乐而不为呢~ 如果文章帮助到你了可以点个赞让我知道我会很快乐~加油
http://www.dnsts.com.cn/news/245474.html

相关文章:

  • 中国建设银行的网站wordpress打不开首页
  • 网站会员整合关于学校网站建设的请示
  • asp如何做网站天津红桥网站建设
  • 音平商城谁做的网站雅江网站建设
  • php房产中介网站源码做企业网站专用词
  • 大气蓝色企业网站模板网站怎么做移动图片不显示不出来
  • 便捷网站建设哪家好wordpress有什么好玩的插件
  • 网站开发项目总结报告经营一个小型app多少钱
  • 如何上传网站内容深圳网站建设黄浦网络-技术差
  • 企业北京响应式网站制作泰州网站制作企业
  • 网站的优化策略方案seo模拟点击工具
  • 泌阳县住房建设局网站wordpress页面伪静态nginx
  • 建设部网站备案做网站推广链接该怎么做
  • 开发区网站制作公司做美图 网站
  • 宁波小网站制作推广自己建设外贸网站
  • 免费cms网站管理系统网站名称 规则
  • 怎么在企业站建立网站吗江都网站建设
  • 如何创建博客网站计算机网络设计
  • 团购网站怎么做推广网站后台seo设置
  • 公司网站建设企划书wordpress与商城
  • 东莞seo整站优化代理个人网站开发计划书
  • 去视频网站做编辑器网络推广价格
  • 沾益住房和城乡建设局网站网站方案案例怎么做
  • 外贸网站 备案怎么做相册的网站
  • 一级a做爰片免费网站迅雷下载公司做网站好不好
  • 自适应网站做mip改造网络营销推广的作用
  • 前端做网站需要学什么中山市小榄新意网站设计有限公司
  • 省住房与城乡建设厅网站驰够网官方网站
  • 涂料增稠剂移动网站建设公司网站开发简易软件
  • wordpress m3u8 插件免费下载百度seo