问题标签 [cuda]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
1977 浏览

architecture - 关于 cuda 的问题

我正在研究 GPU 编程,想了解更多关于 CUDA 的信息。我已经阅读了很多关于它的内容(来自 Wikipedia、Nvidia 和其他参考资料),但我仍然有一些问题:

  1. 以下对架构的描述是否准确?:GPU 有多个处理器,每个多处理器都有流处理器,每个流处理器可以同时运行线程块。

  2. 所有参考资料都指出,在一个块内创建的最小线程数是 32……这是为什么呢?

  3. 我有一个 ATI Radeon 视频卡。我能够在没有仿真模式的情况下编译一个简单的 CUDA 程序!!。我以为我只能在支持的 Nvidia VGA 上编译和运行 CUDA 程序。有人可以解释一下吗?

0 投票
3 回答
6936 浏览

c++ - 编译 CUDA 示例会产生构建错误

我正在使用 Visual Studio 2008 运行 Windows 7 64 位。我安装了 CUDA 驱动程序和 SDK。SDK 附带了很多示例,包括已编译的可执行文件和源代码。编译后的可执行文件运行良好。当我打开 vc90 解决方案并在 Win32 配置中构建时,我收到此错误:

构建日志:

如果我尝试在 x64 中编译,它根本不会构建,只是跳过项目

我是 C++ 新手,从事 C# 已经有一段时间了。我确定我缺少一些小东西,但是您可以提供的任何线索将不胜感激。

0 投票
3 回答
20003 浏览

cuda - 在 CUDA 中实现关键部分

我正在尝试使用原子指令在 CUDA 中实现一个关键部分,但我遇到了一些麻烦。我创建了测试程序来显示问题:

不幸的是,这段代码硬冻结了我的机器几秒钟,最后退出,打印出消息:

这意味着其中一个 while 循环没有返回,但似乎这应该有效。

提醒atomicExch(unsigned int* address, unsigned int val)一下,原子地设置存储在地址中的内存位置的值val并返回该old值。所以我的锁定机制背后的想法是它最初是这样的0u,所以一个线程应该通过while循环,所有其他线程应该等待while循环,因为它们将读取locks[id]1u. 然后,当线程完成临界区时,它会将锁重置为0u以便另一个线程可以进入。

我错过了什么?

顺便说一句,我正在编译:

0 投票
2 回答
4227 浏览

cuda - 适合初学者的最简单的 CUDA 包装器

我想开始学习如何在 CUDA 中编程,不仅仅是语言,还有程序设计——比如——据我所知——编写没有条件的内核,这样所有线程都运行相同的指令,并且最少同步开销。

据我所知,python 包装器的使用和编码比 C 库更直观。

因此,假设我已经知道/不知道的语言不是障碍,那么最适合开始学习 CUDA 的语言是什么?

哪一个让您最了解 CUDA 中的 DO 和 DONT 以及最简单的学习曲线?

0 投票
3 回答
4238 浏览

algorithm - 使用 CUDA 绘制三角形

我正在编写自己的图形库(是的,它的作业:)并使用 cuda 快速进行所有渲染和计算。

我在绘制填充三角形时遇到问题。我是这样写的,一个进程画一个三角形。当场景中有很多小三角形时它工作得很好,但是当三角形很大时它完全破坏了性能。

我的想法是做两次传球。首先计算仅包含有关扫描线信息的选项卡(从这里到那里绘制)。这将是每个进程计算的三角形,就像在当前算法中一样。在第二遍中,真正绘制每个三角形多个进程的扫描线。

但它会足够快吗?也许有更好的解决方案?

0 投票
4 回答
40850 浏览

c++ - 如何在 Visual Studio 2008 中启动新的 CUDA 项目?

这是一个非常基本的问题,但是如何在 Visual Studio 2008 中启动一个新的 CUDA 项目?我找到了大量关于 CUDA 相关问题的文档,但没有找到关于如何启动新项目的信息。我正在使用 Windows 7 x64 Visual Studio 2008 C++。我真的很想找到某种非常非常基本的 Hello World 应用程序来编译和运行一个基本的程序。

编辑:

我试过你的步骤汤姆。我设置了一个控制台应用程序。然后,我删除了它放入的默认 .cpp,并从模板项目中复制了三个文件,只是为了编译一些东西。当我编译它时,template_gold.cpp 抱怨没有包含 stdafx.h,所以我包含了它。现在构建失败了:

0 投票
3 回答
32600 浏览

c++ - 初学者 CUDA 程序中未解析的外部符号

我创建了一个新的 Win32 控制台应用程序作为一个空项目,我正在使用 Visual Studio 2008 C++ 运行 Windows 7 64 位。我正在尝试从本文底部获取示例代码来构建:http ://www.ddj.com/architect/207200659

我将 CUDA Build Rule v2.3.0 添加到项目的自定义构建规则中。它是可用规则文件列表中唯一带有复选框的东西

我在源文件(文件夹/过滤器???)中创建 moveArrays.cu

在该文件中,我添加以下代码:

当我构建时,我得到了这些错误:

我可以编译和运行 SDK 附带的示例 CUDA 程序。我知道我在这里遗漏了一些简单的东西,但它是什么?

0 投票
2 回答
6954 浏览

cuda - 在内核调用中使用断言

在设备模式下的内核调用中使用断言是否有方便的方法?

0 投票
4 回答
30530 浏览

c++ - 如何将CUDA代码分成多个文件

我正在尝试将一个 CUDA 程序分成两个单独的 .cu 文件,以便更接近于用 C++ 编写一个真正的应用程序。我有一个简单的小程序:

在主机和设备上分配内存。
将主机数组初始化为一系列数字。将主机数组复制到设备数组 使用设备内核查找数组中所有元素的平方 将设备数组复制回主机数组 打印结果

如果我将它们全部放在一个 .cu 文件中并运行它,这将非常有用。当我将它分成两个单独的文件时,我开始出现链接错误。就像我最近的所有问题一样,我知道这是一件小事,但它是什么?

内核支持.cu

我的内核.cu

构建日志:

我在 Windows 7 64 位上运行 Visual Studio 2008。


编辑:

我想我需要稍微详细说明一下。我在这里寻找的最终结果是拥有一个普通的 C++ 应用程序,其中包含 Main.cpp 之类的int main()事件,并从那里运行。在我的 .cpp 代码中,我希望能够引用 CUDA 位。所以我的想法(如果这里有更标准的约定,请纠正我)是我会将 CUDA 内核代码放入他们的 .cu 文件中,然后有一个支持的 .cu 文件来处理与设备的对话和调用内核函数等等。

0 投票
1 回答
16629 浏览

c++ - 如何将 CUDA .cu 代码与 C++ 应用程序集成

这篇文章与我之前的文章非常相似:如何将 CUDA 代码分离为多个文件 恐怕我对我实际要求的内容犯了这样的错误,以至于尝试在那里纠正它会太混乱。

我将此代码松散地基于 CUDA SDK 中的 cppIntegration 示例。

我想要一个带有我的main()函数的 main.cpp 并让它调用一个单独的 .cu 文件来在 GPU 上做一些工作。在单独的 .cu 文件中,我希望它能够调用驻留在另一个 .cu 文件中的内核代码。我设想三个文件:Main.cpp、KernelWrapper.cu 和 MyKernel.cu。RunTest()用于测试目的的 Main.cpp 除了调用位于 KernelWrapper.cu 中的函数之外什么都不做。该RunTest()方法执行TestDevice(int *deviceArray)位于 MyKernel.cu 中的内核

主要.cpp:

KernelWrapper.cu:

MyKernel.cu:

这会产生这些错误:

我在 Windows Vista 7 64 位上运行 Visual Studio 2008

编辑:

Tom,这是将代码生成设置为 /MT 所产生的构建日志