【发布时间】:2014-04-10 21:24:26
【问题描述】:
我正在尝试编写有关传感器计算器的程序,我想听听你们如何提高我的程序的执行时间?
简而言之,传感器计算器是执行矩阵乘法的程序。它每秒可以接收 50,000 个矩阵。传感器计算器的主要工作是接收矩阵并使用已存储在程序中的 5 个矩阵之一计算它们。
传感器计算器有 5 种方法,每种方法都有自己的矩阵,它与接收的(参数)矩阵相乘(矩阵乘法)。当然,它们会返回生成的矩阵。
- 我在各种计算机上总共有 50 000 个虚拟审查员。
- 每个传感器都通过 UDP 每秒向计算器(服务器)发送一个矩阵。
- 承载传感器计算器、接收矩阵并计算它的服务器。
- 服务器将使用 UDP 将结果发送回传感器(客户端)。
所有矩阵都是 10x10 大小。
例如第一种方法是:
public int[10][10] calculateWind(int[10][10] A){
int[10][10] C = new int[10][10]; //
for (int i = 0; i < 10; i++) { // Row
for (int j = 0; j < 10; j++) { // Column
for (int k = 0; k < 10; k++) { // Column
C[i][j] += A[i][k] * B[k][j];//B is constant matrix(private attribute)
}
}
}
return C;}
我正在使用 Java,但有人告诉我可以将 FORTRAN & C 与 java 一起使用,这会有所帮助吗?
我正在努力寻找最快的方法。告诉我你们认为可以帮助我的程序提高性能的一切。改变编程语言?使用独特的算法?
欢迎任何建议,除了使用 ASSEMBLY 并感谢您的建议。
【问题讨论】:
-
您可以通过 Java 本地接口 JNI 将矩阵从 Java 传递到 C 或 Fortran 代码,如下所述:stackoverflow.com/questions/14725789/…
-
从 java 传递到 Fortran 是否有任何延迟?
-
有一些延迟,但它大约是矩阵中行数的平方。计算矩阵乘积的时间往往占主导地位,大约是矩阵中行数的立方。这是指导您的经验法则。为了准确地知道您想要测量。
-
您的帖子中的意思是“传感器”而不是“审查员”吗?你多次使用“审查员”这个词。
-
是的,我是说传感器,谢谢。
标签: java c matrix fortran computer-science