import java.applet.Applet; import java.awt.*; import java.io.*; public class MatrixMultiplication extends Applet { private ConsoleOutputStream console = null; public void init() { setName("Libra Matrix Multiplication Applet"); setSize(1280, 480); console = new ConsoleOutputStream(480); String[] args = {""}; _main(args, console.out); } public void stop() { } public void paint(Graphics g) { if (console != null) console.draw(g); } public void _main(String[] args, PrintStream out) { final int N = 2048; long flopCount; double startTime, time, gflops; gVar A, B, C; out.println("********************************"); out.println("SGEMM : matrix multiplication"); out.println("********************************"); out.println();out.println(); System.loadLibrary("jv"); if (libra.Init(args.length, args) != 0) return; libra.SetDefaultDataType(gDataType.GFLOAT32); /* Create two N by N matrices. */ A = libra.ones(N); B = A; /* warm up phase of the gpu! (to get accurate timing results) */ C = libra.matmul(A, B);C = libra.matmul(A, B); C = libra.matmul(A, B);C = libra.matmul(A, B); startTime = libra.GetTime(); /* Perform matrix multiplication */ C = libra.matmul(A, B); time = libra.GetTime() - startTime; out.format("Total time : %g%s", time*1000, " milliseconds");out.println(); /* Compute a performance measurement. Gigaflop / s. */ flopCount = (2*N-1)*N*(long)N; gflops = flopCount / time / 1e9; out.format("%g%s", gflops, " GFlop/s.");out.println(); libra.Shutdown(); } public static void main(String[] args) { //libra.SetCurrentBackend(gBackend.CPU_BACKEND); new MatrixMultiplication()._main(args, System.out); } }