0

这是对 http://wind.d.umn.edu/acmclub/?q=node 提供的代码http://wind.d.umn.edu/acmclub/sites/default/files/summation.cu参考/12 我是一名初级程序员,但除了几件事外,我仍然可以按照代码和解释进行操作。

1.] 取自 summation.cu 的这一行中“新”的含义是什么

sum_h = new unsigned long();

2.]我也真的无法理解这段代码。strtoul 服务的目的是什么?如果您能指出一些关于“new”和“strtoul”的初学者资源,我将不胜感激

n = strtoul(argv[1], NULL, 0);

3.] 代码“summation.cu”是否完全用 C++ 编写。那么为了编写 CUDA 程序,我需要学习 C++ 而不是 C 吗?还是我需要同时学习 C 和 C++?

4

2 回答 2

2

简而言之:

  1. new分配内存(例如总和)(见详情
  2. strtoul将字符串转换为长字符串(请参阅详细信息
  3. 我认为你应该从一本好的 C++ 书(例如 C++ Primer)开始,然后再学习一些 C(例如从这本书)。之后,我将从 CUDA 开始。

保持你的下巴。

于 2013-08-22T12:34:55.050 回答
1
  1. 正如 Savior Self 在评论中指出的那样 - new 意味着运行时堆上的动态内存分配。更多信息在这里
  2. atoi我认为这与将存储为 char 的数字转换为整数的 C 函数非常相似。在您的情况下,这应该将数字(存储为字符)argv[1]转换为unsigned long int. 在这里检查。
  3. CUDA 中使用的语言称为“C for CUDA”,只要我一直在阅读和学习,您就可以用 C 编写代码,但也支持 C++ 的许多特性。您可以开始查看CUDA DOCUMENTATION

希望这可以帮助。

于 2013-08-22T12:26:02.563 回答