我是一个业务主要有三分之二的方式通过我的学位课程,与一个小PHP的经验,采取了一个介绍性C++类,现在遗憾的是我的选择业务过程/计算机科学。

我感兴趣的学习更加高级的程序;具体地C,并最终发展到使用该CUDA构对人工神经网络数据分析(不AI、视觉、或语音处理,但对于找到关联性之间的数据点中的大数据集和一般数据/统计分析)。

任何建议有关如何我应该开始学习C?以及ANN/贝叶斯技术分析数据?有这么多的书,我不知道该怎么选择。

由于CUDA是相当新的,似乎没有能多的学习者-友好的(即简单化下)的材料。有学习资源CUDA超出了独的文件?

另外,什么资源将你推荐给我,谈谈计算器和大规模的并行程序,将会帮助我吗?

有帮助吗?

解决方案

我建议不要试图了解CUDA第一,因为它是一个新的技术和你没有太多的背景编程。

因为你没有太多的经验,在C(或C++)、CUDA将是一个痛苦学习,因为它缺乏成熟,库,好的错误,等等。

CUDA是为人们熟悉C(C++的经验,也有帮助),并有一个问题,这个问题需要改进性能通过重新编码或重新思考解决方案的一个众所周知的问题。

如果你试图解决"ANN/贝"的问题,我建议建立解决方案C++或C,你的选择。不要打扰有关创建线或多线程。然后,经过评估的响应时间序列解决方案试图使它的并行通过使用于,提高线、w/e。在此之后,如果你还需要更多的业绩,然后我会推荐的学习CUDA.

我认为这些都是有效的分,因为CUDA有一些非常神秘的错误,难以调试,完全不同的建筑,等等。

如果你还感兴趣,这些都是一些链接,学习CUDA:

在网上课程:

论坛(最好来源的信息):

工具:

问题解决了在CUDA:

其他提示

你已经表达的3个不同的目标:

  • 学习程序在C
  • 学习写代码CUDA平台
  • 学习使用Bayes'蚊帐和/或神经网络进行数据分析

首先:这些东西是不容易的人已经几度的领域。如果你只做一个,一定要了解贝推断。它是迄今为止最强大的框架,可用于推理有关数据,和你需要知道这一点。检查了MacKay书(提及在底部)。你肯定有自己设定一个具有挑战性的任务--我希望你所有的最好的!

你的目标都是相当不同的水壶的鱼。学习计划C是不是太困难。我想如果在所有可能采取的"介绍算法和数据结构"(通常是第一课程CS专业),在你的大学(这是可能教Java)。这将是非常有用的,并基本编码在C会然后仅仅只是学习的语法。

学习写代码CUDA平台基本上更具挑战性。如上文所建议,请查阅OpenMPI第一次。在一般情况下,你将很好地服务于阅读一些有关计算机系统结构(帕特森&Hennessy是好),以及一本关于平行的算法。如果你从来没见过的并发(即如果你还没有听说过一个信号),这会是有用的看起来(讲座注意到,从一个操作系统课程可能会涵盖它--看到的麻省理工学院的开放式课件).最后,如前所述,有几个好的参考文献可供GPU编程,因为它是一个新领域。所以你最好的选择将被阅读的示例的源代码,以了解它是如何做。

最后,贝网和神经网络。首先,请注意,这些都是很大的不同。贝网络是一个图形(节点&边缘)的方式表示一种联合的概率分布在的(通常是大)数的变量。术语"神经网络"是有些含糊,但一般是指使用简单的处理元件的了解非线性函数分类的数据点。一书中,给出了一个非常好的介绍两贝叶斯蚊帐和神经网络是David J.C.MacKay的信息的理论推论和学习的算法。这本书是免费的在线 http://www.inference.phy.cam.ac.uk/mackay/itila/.这本书是迄今为止我最喜欢的话题。博览会是非常清楚,这次演习是照明(大多数已经解决办法)。

如果你正在寻找一个友好的介绍并行编程,而不是考虑开放MPI 或POSIX线程在CPU群集上。所有你需要得到这个开始是一个多核处理器。

普遍的共识是,在这些新的架构(GPU,电池等)多编程有办法在他们的编程模型和API的成熟度方面去。相反,开放MPI和并行线程已经存在了相当一段时间,有很多资源,围绕学习他们。一旦你已经得到了舒适的这些,再考虑尝试的新技术。

虽然肯定对许多其他语言编程接口,C是可能是最常见的现代语言(Fortran和帕斯卡尔仍然踢在这周围区域)使用在高性能计算。 C ++也相当受欢迎,虽然,一些生物信息学软件包使用。在任何情况下,C无疑是一个很好的起点,你可以一下子提高到C ++,如果你想要更多的语言特性或库(很可能会以性能为代价虽然)。

如果你有兴趣在数据挖掘,你可能也想看看所谓的橙色开源系统。它用C ++实现,但它也支持在Python或在视觉链接和节点语言终端用户编程。

我不知道它是否支持神经网络,但我不知道人们用它来学习数据挖掘技术。它支持的东西一样聚类和关联规则。

(另外,如果你不知道它没有,你可能要追查你的B-学校谁做运营管理别人。如果你有兴趣在CS和数据挖掘,你可能会发现志同道合的人那里。 )

链接: gpgpu.org 有一些有趣的讨论

在最新的CUDA版本(3.1,3.2)具有一个全功能的函数集合称为CUBLAS将处理多取芯的矩阵运算为你在单卡设置。并联的backproagation会多出一个小小的挑战,但我的工作就可以了。

我能找到一些伟大的视频课程免费从斯坦福上iTunesU

规划方法(CS106A) 编程抽象(CS106B) 编程范式(CS107) 机器学习(CS229) 与CUDA编程大规模并行处理器

这些课程的每一个都有大约20个左右的讲座所以这是一个投资看他们所有,但非常值得。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top