La interfaz de programación de aplicaciones de com.ibm.gpu (soloLinux®, Windows)

Puede utilizar la interfaz de programación de aplicaciones (API) com.ibm.gpu para desarrollar aplicaciones que ordenan matrices de tipos primitivos (int, long, float, double) en la GPU.

El procesamiento paralelo de operaciones sort en matrices de datos puede mejorar el rendimiento, siempre que la matriz sea suficientemente grande para justificar la sobrecarga del movimiento de datos. Antes de proceder a la descarga de operaciones sort en la GPU debe asegurarse de que dicha acción suponga una ventaja de rendimiento. La prueba indica que el movimiento de datos de la CPU a la GPU tiene un coste neutral de 20.000 entradas, mientras que para las matrices grandes verá un tiempo de clasificación reducido al utilizar la GPU en lugar de la CPU.

Codificación de una operación sort en cualquier dispositivo de GPU

En el siguiente ejemplo de código se muestra una sección de código que descarga la operación sort de una matriz simple en una GPU.

import com.ibm.gpu.GPUConfigurationException;
import com.ibm.gpu.GPUSortException;
import com.ibm.gpu.Maths;

public class Sample3 {

	public static void main(String[] args) {
		
		int[] toSort = { 5, 17, 12, 32, 2, 6, 3, 20 };

		try {
			Maths.sortArray(toSort);
		} catch (GPUSortException e) {
			e.printStackTrace();
		} catch (GPUConfigurationException e) {
			e.printStackTrace();
		}
	}

}

Codificación de una operación sort en cualquier dispositivo de GPU con la salida detallada habilitada

En el siguiente ejemplo de código se muestra la misma operación sort, pero permite la salida detallada en STDOUT. La habilitación de la salida detallada también se puede especificar en la línea de mandatos mediante una propiedad del sistema. Para obtener más información, consulte -Dcom.ibm.gpu.verbose (Linux, sólo Windows).

import com.ibm.gpu.GPUConfigurationException;
import com.ibm.gpu.GPUSortException;
import com.ibm.gpu.CUDAManager;
import com.ibm.gpu.Maths; 

public class Sample2 {

	public static void main(String[] args) {
		
		try {
			CUDAManager.getInstance().setVerboseGPU(true);
		} catch (GPUConfigurationException e1) {
			e1.printStackTrace();
		}

		int[] toSort = { 5, 17, 12, 32, 2, 6, 3, 20 };

		try {
			Maths.sortArray(toSort);
		} catch (GPUSortException e) {
			e.printStackTrace();
		} catch (GPUConfigurationException e) {
			e.printStackTrace();
		}
	}
}

Codificación de una operación sort en un dispositivo de GPU específico

En el siguiente ejemplo de código, la operación sort se descarga en el identificador de dispositivo 0, que es el primer dispositivo de GPU del sistema. Puede determinar el identificador de dispositivo mediante programación utilizando getDeviceID(), o especificando nvidia-smi en la línea de mandatos del sistema que ejecuta la aplicación Java™ .

import com.ibm.gpu.*;

public class Sample1 {

	public static void main(String[] args) {
		
		int[] toSort = { 5, 17, 12, 32, 2, 6, 3, 20 };

		try {
			Maths.sortArray(0, toSort);
		} catch (GPUSortException e) {
			e.printStackTrace();
		} catch (GPUConfigurationException e) {
			e.printStackTrace();		}
	}
}
Para obtener más información, consulte la Referencia de programación de aplicacionescom.ibm.gpu.