Programowanie kart graficznych

Najnowsze sterowniki, Toolkit i SDK

NVIDIA CUDA C Documentacja

CUDA C Best Practices Guide

GPU Computing Webinars

  

 Zadanie 27.03.2017

Rozwiązanie zadania "Pitch"

Zadanie 15.05.2017

Stwórz na GPU obrazek wg wzoru poniżej

pixels(x,y) = 127 + 128 * (sin((x / (float)w * 16) * 1.5708f) * sin((y / (float)h * 16) * 1.5708f));

gdzie:

x,y to współrzędne punktu (piksela) na obrazie;

w,h to szerokość i wysokość obrazu.

Następnie zmień kernel tak, aby wartości obliczane były dla bloków w pamięci dzielonej (__shared__), a następnie wpisywane do tablicy pikseli w odwrotnej kolejności, czyli wartość z punktu [0][0] wpisana do ostatniej dla danego bloku, wartość [0][1] do przedostatniej dla danego bloku itd. 

Do zapisania pliku graficznego można użyć funkcji:

void writeP5_PPM(const char* filename, const unsigned char* pixelData, int width, int height)
{
	FILE* plik;
	errno_t error;
	error = fopen_s(&plik, filename, "wb");
	if (!error)
	{
		fprintf(plik, "P5n%d %dn255n", width, height);
		fwrite(pixelData, sizeof(unsigned char), width*height, plik);
		fclose(plik);
	}
	else
	{
		fprintf(stderr, "File open errorn");
	}
}