Muokataan sivua OpenCL
Siirry navigaatioon
Siirry hakuun
Kumoaminen voidaan suorittaa. Varmista alla olevasta vertailusta, että haluat saada aikaan tämän lopputuloksen, ja sen jälkeen julkaise alla näkyvät muutokset.
Nykyinen versio | Oma tekstisi | ||
Rivi 1: | Rivi 1: | ||
Tämä sivu on kesken. | |||
Myös tavallisiin suorittimiin saa OpenCL-tuen, jolloin ohjelmointia voi kokeilla ilman | Grafiikkaprosessorien (GPU) käyttöä yleiseen laskentaan, ei välttämättä pelkkään grafiikan tuottamiseen, kutsutaan nimellä GPGPU (engl. 'General-purpose computing on graphics processing units'). GPGPU-ohjelmointiin on useita ohjelmointikieliä, joista OpenCL on avoin monen valmistajan tukema standardi. Sen tunnetuin kilpailija lienee vain NVidian laitteissa käytettävä CUDA. Myös tavallisiin suorittimiin saa OpenCL-tuen, jolloin ohjelmointia voi kokeilla myös ilman GPU:ta. Toisaalta halvin OpenCL:ää tukeva GPU maksoi vuoden 2014 alussa vain noin 30 euroa. | ||
= OpenCL-ympäristön toimivuuden tarkistava ohjelma = | |||
Seuraava ohjelma tulostaa OpenCL:ää suorittamaan pystyvät alustat. Oletetaan jatkossa tämän koodin olevan nimellä <tt>hae-alustat.c</tt> | Seuraava ohjelma tulostaa OpenCL:ää suorittamaan pystyvät alustat. Oletetaan jatkossa tämän koodin olevan nimellä <tt>hae-alustat.c</tt> | ||
#include <stdio.h> | |||
#include <stdio.h> | #include <stdlib.h> | ||
#include <stdlib.h> | #include <CL/cl.h> | ||
#include <CL/cl.h> | |||
int main() | |||
int main() | { | ||
{ | int i; | ||
cl_int ret; | |||
// Haetaan alustat (enintään 10). | |||
cl_uint alusta_lkm; | |||
cl_platform_id alusta_id[10]; | |||
ret = clGetPlatformIDs(10, alusta_id, &alusta_lkm); | |||
if (ret != CL_SUCCESS) { | |||
printf("clGetPlatformIDs epäonnistui.\n"); | |||
exit(1); | |||
} | |||
// Haetaan alustojen valmistajien nimet (max. 1000 merkkiä) | |||
printf("clGetPlatformIDs löysi %i alustaa.\n", alusta_lkm); | |||
for (i=0; i<alusta_lkm; i++) { | |||
char tmp[1000]; | |||
clGetPlatformInfo(alusta_id[i], CL_PLATFORM_VENDOR, 1000, tmp, NULL); | |||
printf("Alustan %i toimittaja on %s.\n", i, tmp); | |||
} | } | ||
} | |||
= OpenCL-ympäristö Fedora 20 -jakeluun = | |||
OpenCL-ohjelman kääntämiseen (mutta ei linkittämiseen valmiiksi ohjelmaksi) riittävät OpenCL-otsakkeet. Ne asentuvat komennolla | OpenCL-ohjelman kääntämiseen (mutta ei linkittämiseen valmiiksi ohjelmaksi) riittävät OpenCL-otsakkeet. Ne asentuvat komennolla | ||
yum install opencl-utils-devel | |||
Tämän jälkeen komento | Tämän jälkeen komento | ||
gcc -I/usr/include/opencl-utils/include -c hae-alustat.c | |||
tuottaa tiedoston <tt>hae-alustat.o</tt> | tuottaa tiedoston <tt>hae-alustat.o</tt> | ||
Seuraavaksi tarvitaan pari pakettia riippuvuuksien vuoksi | Seuraavaksi tarvitaan pari pakettia riippuvuuksien vuoksi | ||
Rivi 84: | Rivi 54: | ||
./hae-alustat | ./hae-alustat | ||
tulostaa | tulostaa | ||
clGetPlatformIDs löysi 1 alustaa. | |||
Alustan 0 toimittaja on Intel(R) Corporation. | |||
OpenCL | NVidian OpenCL-tuen saat käyttöön [[RPM Fusion]] -pakettivarastosta komennolla | ||
yum install kmod-nvidia | |||
Boottaamalla koneen voi varmistaa tämän toimivuuden. | |||
OpenCL toimii prosessorissa, jossa on vähintään SSE4.1-tuki. Tämän tarkistaa helpoiten komennolla | |||
fgrep sse4_1 /proc/cpuinfo | |||