java – 大型网络迭代 – 并行性?
发布时间:2020-12-15 02:26:44 所属栏目:Java 来源:网络整理
导读:我正在编写一种算法来测量独立攻击下大型网络的健壮性.该网络有大约2000个节点,面临10 ^ 8次攻击.最初我在Matlab中实现了我的功能,但是迭代次数过多(10 ^ 8)并没有成功.每次迭代都试图通过提高稳健性来重新连接网络. 简单并行性的问题在于,每次网络重新连线
我正在编写一种算法来测量独立攻击下大型网络的健壮性.该网络有大约2000个节点,面临10 ^ 8次攻击.最初我在Matlab中实现了我的功能,但是迭代次数过多(10 ^ 8)并没有成功.每次迭代都试图通过提高稳健性来重新连接网络.
简单并行性的问题在于,每次网络重新连线时,新的迭代都在重新连接的网络上运行. 我不知道如何在这里实现高度的并行性,以便有效地运行我的算法.目前没有并行性我相信它将需要大约1477天. 解决方法
每次迭代大约需要1.25秒. (大约40亿个时钟周期)听起来好像很长一段时间,必须有一些机会来优化你正在做的事情并将其减少到毫秒.优化代码通常可以提高性能,而不是平行化. (因为并行代码受到您拥有的免费硬件数量和协调多个CPU /系统的开销的限制)
你有多少硬件?如果您的进程受CPU限制,那么如果您有N个CPU,则最多可以使应用程序快N倍. 假设您有足够的硬件,例如可以使用2048个可以玩1天的CPU.您可以使用不同的随机/可能配置启动网络,而不是假设您需要完全忠实的端到端测试.独立地对每个网络运行10 ^ 5次攻击并检查您的结束状态是否与另一次运行的起始状态匹配.即你可以在理论上将这些结果一起端到端地加入. 根据您需要多少内存,您可能会发现塔式服务器是最具成本效益的. 您可以购买配备Xeon Quad 2.5 GHz和4 GB内存的服务器,价格为354英镑.这笔钱很多钱. 但是,如果您可以访问现有资源,那么您可能会感觉更好.例如你是否为一家拥有1000台桌面的公司工作,这些台式机不能过夜使用. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |