1 . Is F# an appropriate tool for HPC computations on such servers?
它(F#)作为一种语言,可以鼓励并行工作良好的代码 – 至少部分是减少状态可变性和高阶函数 – 这是一个可以而不是意志.然而,使用HPC,有许多专业编程语言/编译器和/或负载分配方式(例如共享统一存储器或分布式微内核). F#只是一种通用编程语言:它可以或可能不具有各种技术的访问(例如,绑定可能存在或可能不存在). (这甚至适用于非分布式并行计算.)
2 . Is it realistic to use up to 100% of CPU for a real world problem?
这取决于什么是限制因素.与我的朋友谈话,他做了5k 100k的HPC研究与开发,数据和空闲时间的交换通常是限制因素(当然,这是一个更高的n :-),所以即使是小的IO减少的改进(效率或不同的算法)可以带来显着的收益.不要忘记在同一机器上在CPU /缓存之间简单移动数据的费用!而且,当然,磁盘IO …
3 . What should I do to obtain a high speed up? Everything is in one big parallel for loop so I would expect that it is all what I should do…
找出缓慢的部分(是)和修复它们(他们):-)例如运行配置文件分析.请记住,它可能需要使用完全不同的算法或方法.
4 . If F# is NOT an appropriate language, what language is?
虽然我没有争论,但博士的朋友使用/工作在Charm++:它是分布式并行计算的一个非常专注的语言(而不是所讨论的环境,但我正在试图说明一点:-) – F#尝试成为一个体面的通用语言.