这个问题主要是关于硬件的,也有关于软件的。
在我目前的工作中,我有大约 6800 万个并行迭代的组合。对于这些组合中的每一个 - 都涉及对同一数据集的处理。我猜这个想法与神经网络的训练方式非常相似。
我目前的问题是,处理所有组合需要 10 个小时。我正在使用C#,代码可以简化为:
long combinationCount = 68,211,200; // (68m)
List<Data> data = new List<Data>();
long dataCount = data.Count(); // 65,800 (65k)
// itterate every combination
Parallel.For(0, combinationCount, new ParallelOptions { MaxDegreeOfParallelism = 4}, (index, loopState) => {
for(int i = 0; i < dataCount; i++) {
// proccess each data record
}
});
我当前的硬件是带有处理器i7-6500U(2 核,4 线程)的 HP 笔记本电脑。相当旧的也许不是这类任务的最佳选择。
所以我的问题是——如何优化和提高我的应用程序的性能?更准确地说 - 我想听听关于以下主题的想法:
CPU. 由于我打算购买固定式 PC - 最好选择以下口味:AMD Ryzen 1700/1700x/1800x- 8 核,16 线程Intel's i7 8700/8700k- 6核,12线程,每核频率更高
请注意!问题不在于AMDor Intel,而更多地在于以较低的时钟速度拥有 8 个物理内核是否比具有 6 个内核但时钟速度更高的 CPU 更好。专门用于编程。
GPU. 我注意到了,您可以利用计算GPU核心而不是CPU. 这在理论上将提高性能 X 倍。问题是您需要使用较低级别的编程语言C++来利用它。因为C#这是我拥有的唯一工具集 - 我想知道是否值得投资于更好的Video card而不是CPU?
我用谷歌搜索了一下,发现了一个项目,该项目altimesh Hybridizer似乎允许对它进行编码C#和编译,以使 aGPU可以运行它。这个想法很整洁。如果上述情况属实 - 那么购买更高端的 GPU 是否更有意义?总体而言,与 6/8 核 CPU 相比,在 GPU(CUDA 内核?)上执行的计算可以提高多少性能?如果重要的话-我正在寻找GTX 1060 3GB/6GB价格范围的视频卡。
然后再次。如果这不是提出此类问题的最佳场所,我很抱歉。我主要关心的是构建一个能够满足当今计算需求的系统,无论是人工智能/神经网络/还是海量数据处理,就像我的情况一样