cuda - 使用矩阵的 CUDA 中的分段错误
问题描述
我正在 CUDA 中编写一个程序,它给定一个静态矩阵,它填充了一个给定的值,但我不知道为什么它给了我段错误......我认为给出它的行是当我尝试复制矩阵回到主机上,但我想不出另一种方法来做到这一点。
#include <cuda.h>
#include <iostream>
using namespace std;
__global__ void initKernel(float A[][65536], int n, int m, float value){
int i = blockDim.x*blockIdx.x + threadIdx.x;
int x,y;
if(i<n*m){
x=i/m;
y=i%m;
}
A[x][y]=value;
}
void matrixInit(float A[][65536], int n, int m, float value){
int size=(n*m)*sizeof(float);
int block_size = 32, number_of_blocks = ceil((n*m)/block_size);
float (*d_A)[65536];
cudaMalloc((void**)&d_A, size);
cudaMemcpy(d_A, A, (n*m)*sizeof(float), cudaMemcpyHostToDevice);
initKernel<<<number_of_blocks, block_size>>>(d_A, n,m,value);
cudaMemcpy(A,d_A,size,cudaMemcpyDeviceToHost);
}
int main(){
int n=4096;
int m=65536;
float A[4096][65536];
matrixInit(A,n,m,1.0);
}
解决方案
推荐阅读
- spark-java - 将 spark-java 请求转发到另一个资源
- dart - 如何检查 Flutter Text 小部件是否溢出
- julia - 在 Julia 中将函数参数更改为关键字似乎会引入类型不稳定性
- asynchronous - 如何将迭代器转换为成功时的流或失败时的空流?
- javascript - 使用Javascript将对象数组转换为对象
- npm - 如何在 npm 脚本中更喜欢全局 npm 而不是本地 npm?
- javascript - 如何在单击时更改具有一个 id 的多个按钮类?
- go - 带有 go 和 dep 的 Heroku:`推送被拒绝:无法编译 Go 应用程序`
- python - 对单词进行计数和排序时,带有大 .txt 文件 Python 的 MemoryError
- jquery - jQuery:仅当用户输入正确的字符串格式时才启用提交按钮