FAQ - Frequently asked questions

Linux

Tiedostojen siirtäminen sftp-ohjelmalla

Linux-koneista löytyvä sftp-ohjelma soveltuu tiedostojen siirtämiseen GPU-palvelimen ja lokaalin tietokoneen välillä. Voit yhdistää palvelimeen seuraavalla komennolla:

sftp tunnus@serveri.fi

Lista komentoja:

Komento Selitys
ls (kansio) Listaa palvelimen kansion sisällön
lls (kansio) Listaa lokaalin kansion sisällön
cd kansio Siirtyy kansioon palvelimella
lcd kansio Siirtyy kansioon lokaalilla tietokoneella
get tiedosto Lataa tiedoston palvelimelta
put tiedosto Siirtää tiedoston palvelimelle

GIT

Pikaohje

Lisää tyypillisimmät tiedostotyypit seurantaa, committaa muutokset, puskee Yousourceen:

cd tiea342_sukunimi_etunimi/
git add --ignore-missing *.c *.cpp *.cu *.h *.cl *.txt *.pdf *.png *.svg Makefile README
git commit -a -m "Full commit `date +%F_%R`"
git push origin master
git status -u

Muuta:

  • Tiedoston lisääminen gitin seurantaan: git add tiedosto
  • Kaikkien muutoksien committaaminen: git commit -a -m "viesti"
  • Yksittäisen tiedoston committaaminen: git commit -m "viesti" tiedosto
  • Committien puskeminen Yousourceen: git push origin master
  • Committien "vetäminen" Yousourcesta: git pull origin master
  • Peruuttaa lokaalisti edelliseen committiin: git stash
  • Muita komentoja: git rm poistettava_tiedosto, git mv vanha_nimi uusi_nimi

Esimerkkikoodit-repon "vetäminen" (git pull origin master) ei onnistu

Yritä peruuttaa lokaalit muutokset git stash -komennolla. Komento peruuttaa kaikki tekemäsi lokaalit muutokset edelliseen committiin asti. Menetät siis kaikki tekemäsi muutokset. Käytä varoen. Vielä radikaalimpi ratkaisu on resetoida lokaali repo:

git fetch origin
git reset --hard origin/master

OpenCL

error: use of type 'double' requires cl_khr_fp64 extension to be enabled

OpenCL-ytimen lähdekoodin alkuun täytyy sisällyttää rivi:

#pragma OPENCL EXTENSION cl_khr_fp64 : enable // Tuplatarkkuus-tuki (double)

ptxas application ptx input, line 91; error : Call has wrong number of parameters

Tyypillinen virhetuloste OpenCL-kääntäjältä Nvidian näytönohjaimilla. Viittaa virheeseen ytimen linkityksen aikana ja valitettavasti ei kerro kovin paljoa varsinaisesta ongelmasta. Tässä kuitenkin yleisimmät:

  • Kutsuttu aliohjelmaa, jota ei ole olemassa (esim. printf-aliohjelma OpenCL 1.1 -laitteilla; mako)
  • Aliohjelmakutsulle on annettu väärä määrä argumentteja

./opencl: /usr/local/cuda/lib64/libOpenCL.so.1: no version information available (required by ./opencl)

Makon ja piraijan OpenCL-asennuksessa on jotain hassua. Virheestä ei kannata välittää.

C/C++

Kaksiulotteisen taulukon varaaminen dynaamisesti C++:ssa

// Varataan N*M-taulukko
double** taulukko = new double*[N];
for(int i = 0; i < N; i++)
    taulukko[i] = new double[M];

// Taulukkoa voidaan nyt käyttää normaalisti
taulukko[3][5] = 2.0;

// Vapautetaan N*M-taulukko
for(int i = 0; i < N; i++)
    delete [] taulukko[i];
delete [] taulukko;

Voit myös varata yksiulotteisen taulukon ja viitata siihen kaksiulotteisesti:

// Varataan N*M-taulukko
double* taulukko = new double[N*M];

// Viitataan N*M-taulukkon alkioon 3,5
taulukko[3*M+5] = 2.0;

// Vapautetaan N*M-taulukko
delete [] taulukko;