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

免费建设游戏对战平台网站越秀定制型网站建设

免费建设游戏对战平台网站,越秀定制型网站建设,网站平面模板,wordpress怎么建页面目录 1. 解决的问题 2. 分析 3. 方法 4. 代码示例 1. 解决的问题 利用块和线程索引,从全局内存中访问指定的数据。 2. 分析 通常情况下,矩阵是用行优先的方法在全局内存中线性存储的。如下。 8列6行矩阵(nx,ny)(…

目录

1. 解决的问题

2. 分析

3. 方法

4. 代码示例


1. 解决的问题

利用块和线程索引,从全局内存中访问指定的数据。

2. 分析

通常情况下,矩阵是用行优先的方法在全局内存中线性存储的。如下。

8列6行矩阵(nx,ny)=(8,6)。

3. 方法

这里建立二维网格(2,3)+二维块(4,2)为例,使用其块和线程索引映射矩阵索引。

(1)第一步,可以用以下公式把线程和块索引映射到矩阵坐标上;

(2)第二步,可以用以下公式把矩阵坐标映射到全局内存中的索引/存储单元上;

比如要获取矩阵元素(col,row) = (2,4) ,其全局索引是34,映射到矩阵坐标上,

ix = 2 + 0*3=2; iy = 0 + 2*2=4. 然后再映射到全局内存idx = 4*8 + 2 = 34.

4. 代码示例

#include "cuda_runtime.h"
#include "device_launch_parameters.h"  // threadIdx#include <stdio.h>    // io
#include <time.h>     // time_t
#include <stdlib.h>  // rand
#include <memory.h>  //memset#define CHECK(call)                                   \
{                                                     \const cudaError_t error_code = call;              \if (error_code != cudaSuccess)                    \{                                                 \printf("CUDA Error:\n");                      \printf("    File:       %s\n", __FILE__);     \printf("    Line:       %d\n", __LINE__);     \printf("    Error code: %d\n", error_code);   \printf("    Error text: %s\n",                \cudaGetErrorString(error_code));          \exit(1);                                      \}                                                 \
}void initiaInt(int* p, const int N)
{for (int i = 0; i < N; i++){p[i] = i;}
}/// <summary>
/// 
/// </summary>
/// <param name="c">全局内存中线性存储的二维矩阵</param>
/// <param name="nx">列</param>
/// <param name="ny"></param>
void printMatrix(int* c, const int nx, const int ny)
{int* ic = c;printf("\n matrix: [%d, %d] \n", nx, ny);for (int i = 0; i < ny; i++){for (int j = 0; j < nx; j++){int cur_ele = ic[i * nx + j];printf("%d ", cur_ele);}printf("\n");}printf("\n");
}/// <summary>
/// 
/// </summary>
/// <param name="a">全局内存中是线性存储的</param>
/// <param name="nx">col</param>
/// <param name="ny"></param>
/// <returns></returns>
__global__ void printThreadIdx(int* a, const int nx, const int ny)
{// 矩阵行列int ix = threadIdx.x + blockIdx.x * blockDim.x;int iy = threadIdx.y + blockIdx.y * blockDim.y;  // 全局索引unsigned int idx = iy * nx + ix;  // 前面有iy行,每行有nx个数。printf("thread_idx (%d, %d) block_idx (%d, %d) coordinate (%d, %d) global index %d val %d\n",threadIdx.x, threadIdx.y, blockIdx.x, blockIdx.y, ix, iy, idx, a[idx]);
}int main(void)
{// get device infoint device = 0;cudaDeviceProp deviceProp;CHECK(cudaGetDeviceProperties(&deviceProp, device));printf("Using device: %d %s", device, deviceProp.name);  // 卡号0的显卡名称。CHECK(cudaSetDevice(device));  // 设置显卡号// set matrix dimensionint nx = 8, ny =6, nxy = nx * ny;int nBytes = nxy * sizeof(int);// malloc host memoryint* h_a;h_a = (int*)malloc(nBytes);// init datainitiaInt(h_a, nxy);printMatrix(h_a, nx, ny);// malloc device memoryint* d_Mat_a;cudaMalloc((void**)&d_Mat_a, nBytes);// transfer data from host to devicecudaMemcpy(d_Mat_a, h_a, nBytes, cudaMemcpyHostToDevice);// configdim3 block(4, 2);  // 二维线程块(x,y)=(4,2)dim3 grid((nx+block.x-1) / block.x, (ny+block.y-1)/block.y); // 二维网格(2,3)// 直接nx/block.x = 8/4=2. (8+4-1)/4=2.// invoke kernelprintThreadIdx << <grid, block >> > (d_Mat_a, nx, ny);cudaDeviceSynchronize();// free memorycudaFree(d_Mat_a);free(h_a);// reset devicecudaDeviceReset();return 0;
}

可以看到,全局索引值就是矩阵中存储的值。 

http://www.yayakq.cn/news/456143/

相关文章:

  • 网站建设公司有前途吗企业免费邮箱注册申请
  • 如何做网站编辑代码网站开发涉及到缓存吗
  • spring框架做网站怎么做网页菜单
  • 在网上做黑彩网站会怎样食品经营许可证
  • 营销型网站软件重庆logo设计图片
  • 网站建设捌金手指花总二门户网站的建设方案
  • 招聘企业网站建设模块常用的电子商务网站开发技术
  • 厦门建设企业网站建设工程造价管理
  • 网站做流量怎么赚钱的建设手机版网站
  • 免费1级做爰片在线观看网站投资理财产品网站建设
  • 北京网站seo排名重庆网站建设选承越
  • 站长工具seo下载瑞安外贸网站制作
  • 养殖网站 模板服装网站建设方法
  • 安防公司网站模板科技项目的类型有
  • 浙江工信部网站备案查询工厂网站开发
  • 网站后台培训嘉兴做网站优化多少钱
  • 南宁网站建设官网济南房产网签查询系统
  • 全屏的网站商业网站开发实训心得体会范文
  • 绑定网站域名怎么做可以网站可以做免费的文案广告
  • 英语培训机构网站建设策划书wordpress中英文插件
  • 宿迁市网站建设网站建设需求分析报告撰写
  • 淘宝客网站如何做排名湖南网站建设小公司排名
  • 上弘科技网站建设怎样做自己的网站和发布网站
  • 网站建设优化服务方案模板怎么免费做文学网站
  • seo做的好的网站有哪些前端工作好找吗
  • 网站开发流程抚州阳江市新增确诊病例
  • 河南网站建设哪个公司做得好西安关键词快速排名
  • 设计方面的网站泰安网站建设定制公司
  • 零基础建设网站教程自建购物网站多少钱
  • 打开山东城市建设职业学院网站艺术家网站源码