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

找清包工程上什么网手机网站怎么优化关键词

找清包工程上什么网,手机网站怎么优化关键词,网站空间数据库使用,闲置公司转让多少钱在多GPU运行应用程序时,需要正确设计GPU之间的通信,GPU间数据传输的效率取决于GPU是如何连接在一个节点上并跨集群的 在多GPU系统里有两种连接方式 多GPU通过单个节点连接到PCIe总线上 多GPU连接到集群中的网络交换机上 /* * 本示例演示了如何使用 Open…

在多GPU运行应用程序时,需要正确设计GPU之间的通信,GPU间数据传输的效率取决于GPU是如何连接在一个节点上并跨集群的
在多GPU系统里有两种连接方式
多GPU通过单个节点连接到PCIe总线上
多GPU连接到集群中的网络交换机上

/*
* 本示例演示了如何使用 OpenMP API 为多个 GPU 编写应用程序在 CPU 端使用 OpenMP 进行线程处理的多 GPU 示例, 需要支持 OpenMP 2.0 的编译器*/#include <omp.h>
#include <stdio.h>  // 使用 stdio 函数,因为 C++ 流不一定是线程安全的
#include <helper_cuda.h>using namespace std;//一个简单的内核,只需将每个数组元素递增 b
__global__ void kernelAddConstant(int *g_a, const int b)
{int idx = blockIdx.x * blockDim.x + threadIdx.x;g_a[idx] += b;
}
// 一个谓词,用于检查每个数组元素是否被设置为其索引加上 b
int correctResult(int *data, const int n, const int b)
{for (int i = 0; i < n; i++)if (data[i] != i + b)return 0;return 1;
}
int main(int argc, char *argv[])
{int num_gpus = 0;   // CUDA GPU 数量printf("%s Starting...\n\n", argv[0]);/// 确定支持 CUDA 的 GPU 数量//cudaGetDeviceCount(&num_gpus);if (num_gpus < 1){printf("no CUDA capable devices were detected\n");return 1;}/// 显示 CPU 和 GPU 配置//printf("number of host CPUs:\t%d\n", omp_get_num_procs());printf("number of CUDA devices:\t%d\n", num_gpus);for (int i = 0; i < num_gpus; i++){cudaDeviceProp dprop;cudaGetDeviceProperties(&dprop, i);printf("   %d: %s\n", i, dprop.name);}printf("---------------------------\n");/// initialize data//unsigned int n = num_gpus * 8192;unsigned int nbytes = n * sizeof(int);int *a = 0;     // 指向 CPU 上数据的指针int b = 3;      // 数组递增的值a = (int *)malloc(nbytes);if (0 == a){printf("couldn't allocate CPU memory\n");return 1;}for (unsigned int i = 0; i < n; i++)a[i] = i;// 运行与 CUDA 设备数量相同的 CPU 线程//每个 CPU 线程控制不同的设备,处理各自的数据部分。 // 使用的 CPU 线程数量有可能多于 CUDA 设备的数量,在这种情况下,多个 CPU 线程将在同一设备上分配资源并启动内核。// 例如,尝试 omp_set_num_threads(2 * num_gpus); // 请注意,在 "omparallel "作用域内声明的所有变量都是 是每个 CPU 线程的局部变量//omp_set_num_threads(num_gpus);  //创建与 CUDA 设备数量相同的 CPU 线程//omp_set_num_threads(2*num_gpus);// 创建的 CPU 线程数量是 CUDA 设备数量的两倍#pragma omp parallel{unsigned int cpu_thread_id = omp_get_thread_num();unsigned int num_cpu_threads = omp_get_num_threads();// 设置并检查该 CPU 线程的 CUDA 设备int gpu_id = -1;checkCudaErrors(cudaSetDevice(cpu_thread_id % num_gpus));   // "% num_gpus "允许 CPU 线程数量多于 GPU 设备数量checkCudaErrors(cudaGetDevice(&gpu_id));printf("CPU thread %d (of %d) uses CUDA device %d\n", cpu_thread_id, num_cpu_threads, gpu_id);int *d_a = 0;   // 指向与该 CPU 线程相关联的设备上内存的指针int *sub_a = a + cpu_thread_id * n / num_cpu_threads;   // 指向该 CPU 线程数据部分的指针unsigned int nbytes_per_kernel = nbytes / num_cpu_threads;dim3 gpu_threads(128);  // 128 threads per blockdim3 gpu_blocks(n / (gpu_threads.x * num_cpu_threads));checkCudaErrors(cudaMalloc((void **)&d_a, nbytes_per_kernel));checkCudaErrors(cudaMemset(d_a, 0, nbytes_per_kernel));checkCudaErrors(cudaMemcpy(d_a, sub_a, nbytes_per_kernel, cudaMemcpyHostToDevice));kernelAddConstant<<<gpu_blocks, gpu_threads>>>(d_a, b);checkCudaErrors(cudaMemcpy(sub_a, d_a, nbytes_per_kernel, cudaMemcpyDeviceToHost));checkCudaErrors(cudaFree(d_a));}printf("---------------------------\n");if (cudaSuccess != cudaGetLastError())printf("%s\n", cudaGetErrorString(cudaGetLastError()));// check the result//bool bResult = correctResult(a, n, b);if (a)free(a); // free CPU memoryexit(bResult ? EXIT_SUCCESS : EXIT_FAILURE);
}

在这里插入图片描述

http://www.hkea.cn/news/932837/

相关文章:

  • 外贸营销型网站建设今日最新重大新闻
  • 个性化定制网站长春网络推广优化
  • 合肥庐阳区疫情最新消息seo优化首页
  • h5网站制作接单最新中高风险地区名单
  • 北京市住房城乡建设委网站公司怎么在网上推广
  • 网站建设首页怎样插入视频百度指数在线查询小程序
  • 青州网站制作哪家好aso优化哪家好
  • wordpress做网站优点郑州网站seo优化
  • 宝安做棋牌网站建设找哪家公司好湖南长沙疫情最新消息
  • 四川专业网站建设中国十大企业培训机构排名
  • 怎么切页面做网站灰色词首页排名接单
  • 网站右侧浮动广告代码百度推广代理公司广州
  • 固原建站公司旺道seo推广系统怎么收费
  • 适合做外链的网站海外广告联盟平台推广
  • 建筑模板规格型号郑州厉害的seo顾问
  • ppt做书模板下载网站有哪些内容国际婚恋网站排名
  • 上海网站建设内容更新网络营销策划目的
  • 重庆市建设信息网站关键词查询网
  • 做哪种网站流量大怎么打广告宣传自己的产品
  • 免费表白网站制作seo网络优化推广
  • 网站建设中可能升级中国科技新闻网
  • 网站制作内容文案网站如何快速被百度收录
  • 淘宝淘宝网页版登录入口免费seo公司
  • 竹溪县县建设局网站短视频营销
  • 好的网站有哪些搜索引擎seo是什么意思
  • 做音乐网站赚钱吗做小程序的公司
  • 坪地网站建设域名流量查询工具
  • 网站建设部署万能推广app
  • 网站的重要性怎么做个网站
  • 做网站的经验百度旗下有哪些app