GPU计算矩阵相乘(未优化)
2012-07-28 14:23
453 查看
#include <stdio.h> #define LEN 10 #define BLOCK 10 #define THREAD 32 __global__ void multi_0(int* A, int* B, int* C) { int id = blockIdx.x * blockDim.x + threadIdx.x; if(id < LEN * LEN) { int sum = 0; int i = id / LEN; int j = id % LEN; for(int k = 0; k < LEN; ++k) { sum += A[i * LEN + k] * B[k * LEN + j]; } C[id] = sum; } } int main() { int *A, *B, *C; int memSize = LEN * LEN * sizeof(int); int* a = (int*)malloc(memSize); int* b = (int*)malloc(memSize); int* c = (int*)malloc(memSize); cudaMalloc((void**)&A, memSize); cudaMalloc((void**)&B, memSize); cudaMalloc((void**)&C, memSize); for(int i = 0; i < LEN * LEN; ++i) { //a[i] = i + 1; //b[i] = i<<1 + 1; a[i] = 1; b[i] = 1; } cudaMemcpy(A, a, memSize, cudaMemcpyHostToDevice); cudaMemcpy(B, b, memSize, cudaMemcpyHostToDevice); multi_0<<<BLOCK, THREAD>>>(A, B, C); cudaMemcpy(c, C, memSize, cudaMemcpyDeviceToHost); for(int i = 0; i < LEN; ++i) { for(int j = 0; j < LEN; ++j) { printf("%d\t", c[i * LEN + j]); } printf("\n"); } free(a); free(b); free(c); cudaFree(A); cudaFree(B); cudaFree(C); getchar(); return 0; }
相关文章推荐
- CUDA编程—通过shared memory优化矩阵相乘
- HDU 4920 Matrix multiplication(矩阵相乘小优化)
- GPU上大规模稀疏矩阵特征值计算高效算法之一——GPU介绍
- 【城会玩】hdu 4920 Matrix multiplication【矩阵相乘优化】
- Python计算矩阵相乘
- 矩阵相乘优化算法实现讲解
- C++实战之OpenCL矩阵相乘优化(二)
- GPU中基于CUDA计算SM中active block和active warp及普遍优化流程
- 大数相乘 完全矩阵 优化版
- 利用MPICH2计算矩阵相乘的简单算法
- CUDA范例精解通用GPU架构-(2)其实写个矩阵相乘并不是那么难
- 复数类型矩阵相乘GPU加速--pycuda
- GPU上大规模稀疏矩阵特征值计算高效算法之二——稀疏矩阵
- HDOJ 题目4920 Matrix multiplication(矩阵相乘,优化)
- [hdu4965]矩阵快速幂优化 不规则矩阵相乘 模板
- calc 计算 题解(矩阵乘法优化动态规划)
- 矩阵相乘nxn block的计算过程
- Mapreduce 矩阵相乘应用--计算文本间的相似度
- CUDA计算矩阵相乘
- 矩阵相乘的优化