誰かが私にこれを助けてくれますか?私はパラレルプログラミングを使用して行列の乗算をしようとしています - Java。 これは私がこのような場合には、これまでJava並列行列乗算
public class MatrixParallel22 extends Thread{
final static int noThreads = 2 ;
public static void main(String args[]) throws Exception{
//get the start time
long startTime = System.currentTimeMillis();
MatrixParallel [] threads = new MatrixParallel [noThreads] ;
for(int me = 0 ; me < noThreads ; me++) {
threads [me] = new MatrixParallel(me) ;
threads [me].start() ;
}
for(int me = 0 ; me < noThreads ; me++) {
threads [me].join() ;
}
long endTime = System.currentTimeMillis();
System.out.println("Calculation completed in " +
(endTime - startTime) + " milliseconds");
}
int me ;
public MatrixParallel(int me) {
this.me = me ;
}
public void run() {
//generate two matrices using random numbers
int matrix1 [][] = matrixGenerator();
int matrix2 [][] = matrixGenerator();
//get the number of rows from the first matrix
int m1rows = matrix1.length;
//get the number of columns from the first matrix
int m1cols = matrix1[0].length;
//get the number of columns from the second matrix
int m2cols = matrix2[0].length;
//multiply the matrices and put the result in an array
int[][] result = new int[m1rows][m2cols];
for (int i=0; i< m1rows; i++){
for (int j=0; j< m2cols; j++){
for (int k=0; k< m1cols; k++){
result[i][j] += matrix1[i][k] * matrix2[k][j];
}
}
}
}
public static int[][] matrixGenerator(){
//create an array
int matrix [][] = new int[550][550];
//create a random generator
//and fill it with random numbers
Random r = new Random();
for(int i=0; i < matrix.length; i++){
for(int j=0; j < matrix[i].length; j++){
matrix[i][j] = r.nextInt(10000);
}
}
return matrix;
}
}
を試してみた、私は変数にスレッド数を設定した後、測定し、どのくらいの速プログラムを参照しようとしているものですスレッドの数を増減すると実行されます。
// update - コードを実行するとうまく動作します。しかし、問題は、スレッドの数を増やすと、実行時間が遅くなるということです。 たとえば、2つのスレッドでは、私は316ミリ秒を得ます と8スレッドで私は755ミリ秒を得ます どの部分が間違っているのか分かりません。スレッドを実行する方法ですか?
ちょうど親切なヒント、[How-To-Ask Guide](https://stackoverflow.com/help/how-to-ask)を読んでこのページを読むことができます。あなたの質問は簡単に答えることができ、可能な限り明確です。あなたが抱えている問題を修正するためにあなたがした努力と、それらの修正を試みたときに何が起こったのかを必ず含めてください。ショーコードとエラーメッセージも忘れないでください! –
私たちはあなたに何か助けが必要かわからない。あなたのコードのレビューをしたいですか?または、いくつかのエラーがありますか?あなたの質問にこれらの詳細を含めてください。 –
申し訳ありません。私の悪い。私はより多くの情報を追加しました。私はちょうどタイミングについて混乱している。私は、スレッドの数を増やすと実行がスピードアップすると思いました。しかし、実際には遅くなります – Selyst