Package rnaopencl

Source Code of rnaopencl.Testes

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package rnaopencl;

import com.nativelibs4java.opencl.CLBuffer;
import com.nativelibs4java.opencl.CLContext;
import com.nativelibs4java.opencl.CLDevice;
import com.nativelibs4java.opencl.CLEvent;
import com.nativelibs4java.opencl.CLKernel;
import com.nativelibs4java.opencl.CLMem;
import com.nativelibs4java.opencl.CLPlatform;
import com.nativelibs4java.opencl.CLProgram;
import com.nativelibs4java.opencl.CLQueue;
import com.nativelibs4java.opencl.JavaCL;
import com.nativelibs4java.util.IOUtils;
import com.nativelibs4java.util.NIOUtils;
import java.io.File;
import java.io.IOException;
import java.nio.ByteOrder;
import java.nio.DoubleBuffer;
import java.nio.FloatBuffer;

/**
*
* @author mcas
*/
public class Testes {

    public static void main(String[] args) throws IOException {
       
        double v1[] = FuncoesCPU.gerarVetorAleatorio(12, -30, 30);
        double v2[] = FuncoesCPU.gerarVetorAleatorio(144, -1, 1);
        double v3[] = FuncoesCPU.gerarVetorAleatorio(12, 0, 0);
       
        //calcula "normal"
        double[] temp = new double[v1.length];
        for(int i = 0; i < v1.length; i++){
            temp[i] = v2[i];
        }
       
        v3[0] = FuncoesCPU.produtoEscalar(v1, temp);
       
        //for(int i = 0; i < v3.length; i++){
            System.out.print(v3[0]);
            System.out.print(",");
       
            for(int i = v1.length; i < (v1.length*2); i++){
            temp[i%12] = v2[i];
        }
       
        v3[1] = FuncoesCPU.produtoEscalar(v1, temp);
         System.out.print(v3[1]);
            System.out.print(",");
          
           
        //}
        System.out.println("");
        System.out.println("");
       
        int dataSize = v1.length;
       
        CLContext context = JavaCL.createBestContext();
        CLQueue queue = context.createDefaultQueue();
        ByteOrder byteOrder = context.getByteOrder();
       
       
        DoubleBuffer v1_b = NIOUtils.directDoubles(dataSize, byteOrder);
        DoubleBuffer v2_b = NIOUtils.directDoubles(v2.length, byteOrder);
       
        FuncoesGPU.preencheBuffer(v1_b, v1);
        FuncoesGPU.preencheBuffer(v2_b, v2);       
       
        CLBuffer<Double> buffer_v1 = context.createDoubleBuffer(CLMem.Usage.Input,v1_b, true);
        CLBuffer<Double> buffer_v2 = context.createDoubleBuffer(CLMem.Usage.Input,v2_b, true);
        CLBuffer<Double> buffer_v3 = context.createDoubleBuffer(CLMem.Usage.Output, dataSize);
       
        String src = IOUtils.readText(new File("matvec.cl"));
        CLProgram program = context.createProgram(src);
        CLKernel prod_escalar = program.createKernel("prod_escalar");
        prod_escalar.setArgs(buffer_v1, buffer_v2, buffer_v3, dataSize, dataSize);
       
        CLEvent prodEvt = prod_escalar.enqueueNDRange(queue, new int[] { dataSize });

        DoubleBuffer buffer_v4 = buffer_v3.read(queue,prodEvt);

        for(int i = 0; i < dataSize;i++){
            System.out.print(buffer_v4.get(i));
            System.out.print(",");
        }

       
    }
}
TOP

Related Classes of rnaopencl.Testes

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.