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

宁波模板做网站购物网站功能报价

宁波模板做网站,购物网站功能报价,金山做网站公司,轻量应用服务器做网站目录 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/205167/

相关文章:

  • 南京网站建设学习扁平化网站导航ui模板
  • 网站视图错位网站被跳转公告怎么写
  • 技术支持 东莞网站建设机械加工百度推广运营专员
  • 网站建设福州公司wordpress打开提速
  • 视频教做家常菜的网站手机兼职有哪些
  • 扶余市建设局网站wordpress主题中英文
  • 帝国做的网站打开速度拓普网站建设
  • 涟水网站建设宁晋县建设局网站
  • 厦门哪里有教网站建设WordPress关键词过滤
  • 南浔哪有做网站的金科做的网站
  • 东莞网站建设及外包室内装饰网站模板
  • 设计感网站襄阳营销型网站
  • 河南网站建设华企祥云不用花生壳做网站服务器
  • 朔州路桥建设有限责任公司网站设计师学校有哪些
  • 昆明网站建设系统浏览器禁止网站怎么做
  • 包装设计的网站网站常用字体
  • 网络游戏开发培训上海网站关键词优化
  • 轻量应用服务器搭建网站外发加工网有什么软件
  • 郴州做网站网站搭建代理
  • 建设局网站打不开盐城网站开发公司电话
  • 上海网站建设团队杨浦wordpress怎么清缓存
  • php做网站标题加链接网站搜索引擎优化的基本内容
  • 便宜购 网站建设代运营网站
  • 创可贴在线设计网站钢结构东莞网站建设
  • 邯郸高端网站建设高埗仿做网站
  • 营销型科技网站搜索关键词分析
  • 内网网站开发费用页游代理
  • 新闻类网站备案 100万网站开发需求分析中性能需求分析
  • 个人做网站备案多少钱wordpress模板插件
  • 网站管理的内容app开发公司有哪些