- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
有关此计划的先前问题:
Translating four nested loops into a CUDA kernel
我正在使用 Visual Studio 2012 和 CUDA 6代码应该使用 CUDA 在 BMP 文件上添加模糊效果。在转换为 CUDA 之前,一切都运行良好。这是我第一个使用 C 和 CUDA 的项目,所以我可能犯了一些愚蠢的错误。我的代码出现 76 个错误,其中大多数是“此声明没有存储类或类型说明符”以及更多没有任何意义的错误。我在 http://computer-graphics.se/hello-world-for-cuda.html 的 Hello World 程序之前尝试过并且工作正常。存在相同的错误,因此我并不真正担心它们。
但是我有两个不同的错误:
Error 2 error : Unaligned memory accesses not supported C:\Users\Karpińscy\documents\visual studio 2012\Projects\blur\blur\kernel.cu blur
还有:
Error 3 error MSB3721: The command ""C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v6.0\bin\nvcc.exe" -gencode=arch=compute_10,code=\"sm_10,compute_10\" --use-local-env --cl-version 2012 -ccbin "C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin" -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v6.0\include" -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v6.0\include" -G -maxrregcount=0 --machine 32 --compile -cudart static -g -DWIN32 -D_DEBUG -D_CONSOLE -D_MBCS -Xcompiler "/EHsc /W3 /nologo /Od /Zi /RTC1 /MDd " -o Debug\kernel.cu.obj "C:\Users\Karpińscy\documents\visual studio 2012\Projects\blur\blur\kernel.cu"" exited with code 2. C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V110\BuildCustomizations\CUDA 6.0.targets 597 9 blur
我什至在 google.com 的第二个网站上搜索过答案,但我没有资助适合我的解决方案。请帮助我!
程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <Windows.h>
#pragma pack(push,1)
/* Windows 3.x bitmap file header */
typedef struct {
char filetype[2]; /* magic - always 'B' 'M' */
unsigned int filesize;
short reserved1;
short reserved2;
unsigned int dataoffset; /* offset in bytes to actual bitmap data */
} file_header;
/* Windows 3.x bitmap full header, including file header */
typedef struct {
file_header fileheader;
unsigned int headersize;
int width;
int height;
short planes;
short bitsperpixel; /* we only support the value 24 here */
unsigned int compression; /* we do not support compression */
unsigned int bitmapsize;
int horizontalres;
int verticalres;
unsigned int numcolors;
unsigned int importantcolors;
} bitmap_header;
#pragma pack(pop)
__global__ void blur(bitmap_header* hp, unsigned char *data)
{
int xx,yy,x,y, avgB, avgG, avgR, ile;
int blurSize = 5;
xx = blockIdx.y * blockDim.y + threadIdx.y;
yy = blockIdx.x * blockDim.x + threadIdx.x;
if(xx >= hp->width || yy >= hp->height)
return;
avgB = avgG = avgR = 0;
ile = 0;
for(x = xx; x < hp->width && x < xx + blurSize; x++)
{
for(y = yy; y < hp->height && y < yy + blurSize; y++)
{
avgB += data[x*3 + y*hp->width*3 + 0];
avgG += data[x*3 + y*hp->width*3 + 1];
avgR += data[x*3 + y*hp->width*3 + 2];
ile++;
}
}
avgB = avgB / ile;
avgG = avgG / ile;
avgR = avgR / ile;
data[xx*3 + yy*hp->width*3 + 0] = avgB;
data[xx*3 + yy*hp->width*3 + 1] = avgG;
data[xx*3 + yy*hp->width*3 + 2] = avgR;
}
int filter(char* input, char *output)
{
FILE *fp,*out;
bitmap_header* hp;
bitmap_header* d_hp;
unsigned char *data;
unsigned char *d_data;
//Open input file:
fp = fopen(input, "r");
if(fp==NULL)
return 1;
//Read the input file headers:
hp=(bitmap_header*)malloc(sizeof(bitmap_header));
cudaMalloc( &d_hp, sizeof(bitmap_header));
if(hp==NULL)
return 1;
fread(hp, sizeof(bitmap_header), 1, fp);
cudaMemcpy(d_hp, hp, sizeof(bitmap_header), cudaMemcpyHostToDevice);
//Read the data of the image:
data = (unsigned char*)malloc(sizeof(char)*hp->bitmapsize);
cudaMalloc( &d_data, sizeof(char)*hp->bitmapsize);
fseek(fp,sizeof(char)*hp->fileheader.dataoffset,SEEK_SET);
fread(data,sizeof(char),hp->bitmapsize, fp);
cudaMemcpy(d_data, data, sizeof(char)*hp->bitmapsize, cudaMemcpyHostToDevice);
//Not sure if correctly calling function
dim3 block(16,16);
dim3 grid ( (hp->height + 15)/16, (hp->width + 15)/16 );
blur<<<grid,block>>>(d_hp, d_data);
cudaMemcpy(data, d_data, sizeof(char)*hp->bitmapsize, cudaMemcpyDeviceToHost);
//Open output file:
out = fopen(output, "wb");
if(out==NULL)
{
fclose(fp);
free(hp);
free(data);
cudaFree(d_data);
cudaFree(d_hp);
return 1;
}
fwrite(hp,sizeof(char),sizeof(bitmap_header),out);
fseek(out,sizeof(char)*hp->fileheader.dataoffset,SEEK_SET);
fwrite(data,sizeof(char),hp->bitmapsize,out);
fclose(fp);
fclose(out);
free(hp);
free(data);
cudaFree(d_data);
cudaFree(d_hp);
return 0;
}
int main(int argc, char* argv[])
{
char *path = "file.bmp";
filter(path,path);
return 0;
}
我被要求执行 What is the canonical way to check for errors using the CUDA runtime API? 的错误检查,但我不知道它如何或是否真的能帮助我。
编辑:
感谢@DanielKamilKozar,我解决了这些问题。程序可以编译,但模糊未添加到 BMP 文件中。 CUDA 语法是否正确调用模糊函数?
最佳答案
我通过不通过函数参数发送完整的 BMP header 解决了这个问题,但它是必要的内容。我遇到了另一个问题,函数没有被调用,我通过更新 CUDA 软件解决了这个问题。
关于CUDA - "Unaligned memory accesses not supported",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23716411/
有关此计划的先前问题: Blur effect on bitmap using C Translating four nested loops into a CUDA kernel 我正在使用 Vis
今天下午我更新了我的 sdk,然后我像往常一样运行我的应用程序,我得到了这样的错误。 ${dir}\[appname]-debug-androidTest-unaligned.apk 在磁盘上不存在
我正在编译下面的简单代码,并在 gdb 中运行它。我在 strcpy 行设置了一个断点,一旦我为输入运行它,例如 abc,然后按 s,我得到以下错误: Breakpoint 1, main (argc
适用于ARM的IAR编译器... 我有一个打包的结构 #pragma pack(push, 4) typedef struct { int a; double b; } my_t
从 https://github.com/secmob/PoCForCVE-2015-1528 编译 CVE-2015-1528 的 poc 时通过ndk-build,出现这个错误: [armeabi
我开始学习一些关于 SIMD 内在函数的知识。我注意到对于某些函数,存在对齐和未对齐版本,例如 _mm_store_si128 和 _mm_storeu_si128。我的问题是,这些函数的执行方式是否
我正在尝试转换一些为 MSVC 编写的 C++ 代码,以便它可以在 GCC 或 Clang 上运行。 违规关键字是 UNALIGNED pData 是LPCBYTE 代码示例如下: INT8 som
当放 2 个 jar 文件时,打包 APK app-debug-unaligned.apk 时出现此错误: httpclient-4.3.5.jar httpmime-4.3.5.jar 在Sync
在 android studio 中,当我运行 espresso 测试时,控制台输出: Installing APK: /home/roroco/Dropbox/jvs/ro-adr/testStar
昨晚我将我的 android studio 更新到 0.5.3,从那时起,每当我尝试生成签名的 apk 时,我都会收到此错误消息。当我只是在 android studio 上运行项目时,它不会发生。
我正在关注确切的 instructions从 Meteor 发布 Android 应用程序。我取得了进步,但最后我遇到了错误。 >>>> jarsigner -verbose -sigalg SHA1
我正在将代码从 Windows 移植到 Linux(Red Hat Linux 或 Fed)。在现有代码中,我确实找到了具有(数据类型 UNALIGNED*)引用的代码。 你能告诉我吗1) 移植到 L
我总是得到“app-release-unaligned.apk”。我无法获得“app-release.apk”。但是在我更新 Android SDK 之前,我可以在按下 Build->Generate
今天早上,当我打开我已经工作了一周左右的 Android Studio 项目时,它突然无法在我的手机上运行该应用程序。它可以与 gradle 同步而不会出现任何错误,但是当我尝试运行该应用程序时出现以
在构建变体设置为“调试”模式的 android studio 中,我发现了两个 apk 输出 app-debug.apk app-debug-unaligned.apk 这些文件有什么区别? 最佳答案
所以我读入了一个包含 29 列的数据表,并添加了一个索引列(总共 30 个)。 Data = pd.read_excel(os.path.join(BaseDir, 'test.xlsx')) Dat
我正在尝试在 Ubuntu 20.04 docker 容器中运行应用程序。它启动但很快崩溃。 使用 GDB 我已经追踪到这个 Thread 36 "Emuthread - Sta" received
使用 android gradle 插件2.2.0: buildscript { repositories { maven { url "https://plugins.gra
我是一名优秀的程序员,十分优秀!