Skoči na vsebino

EuroCC in SLING

Python vezava C++ (pybind11)1 2

Luka Leskovec
Univerza v Ljubljani, Fakulteta za Matematiko in Fiziko

Raziskovalna programska oprema pogosto nastaja na preseku dveh svetov: Python je odličen za hitro prototipiranje in analizo podatkov , C++ pa za zahtevne numerične operacije in učinkovito rabo strojnih virov. Delavnica predstavi, kako ta dva jezika povežemo na prepost način z uporabo knjižnice pybind11.

Na praktičnih primerih bomo zgradili Python razširitvene module iz C++ kode, obravnavali pretvorbo tipov, vezavo funkcij in razredov, delo s STL vsebniki ter osnovne numerične primere z Eigen in GSL. Poseben poudarek bo na dobri zasnovi vmesnikov med Python in C++ ter na najpogostejših napakah pri gradnji in uvozu modulov.

Potek

Delavnica je organizirana modularno. Udeleženci postopno preidejo od osnovne vezave do bolj zahtevnih primerov (funkcije, tipi, razredi, numerika in dobre prakse).

Gradiva

Sestavni del delavnice so gradiva v repozitorijih:

Gradiva prenesete z ukazi:

git clone https://github.com/leskovec/pyC_intro.git
git clone https://github.com/leskovec/pyC_part.I.git
git clone https://github.com/leskovec/pyC_part.II.git

Udeleženci

Delavnica je namenjena vsem, ki bi pri delu hoteli kombinirati Python ter C++ kodo.

Zaželena predznanja

  • osnovno poznavanje programskega jezika Python,
  • osnovno poznavanje programskega jezika C++, in
  • osnovno delo v ukazni vrstici Linux.

Pridobljena znanja

  • priprava in prevajanje Python razširitev iz C++ z uporabo pybind11,
  • razumevanje pretvorbe tipov in načrtovanja podpisov funkcij med Python in C++,
  • vezava C++ razredov, metod, enumov in STL vsebnikov,
  • osnove povezovanja numerične C++ kode (Eigen, GSL) s Python vmesnikom, in

  1. Gradivo je objavljeno pod licenco Creative Commons Priznanje avtorstva-Nekomercialno-Deljenje pod enakimi pogoji 4.0 Mednarodna

  2. Delavnica je pripravljena pod okriljem evropskega projekta EuroCC 2, ki je namenjen vzpostavitvi nacionalnih kompetenčnih centrov za superračunalništvo. Več o projektu EuroCC 2 najdete na spletnih straneh SLING. EuroCC in SLING Projekt EuroCC 2 financira Evropska unija. Financiran je s sredstvi Skupnega podjetja za visokozmogljivo računalništvo (EuroHPC JU) ter Nemčije, Bolgarije, Avstrije, Hrvaške, Cipra, Češke republike, Danske, Estonije, Finske, Grčije, Madžarske, Irske, Italije, Litve, Latvije, Poljske, Portugalske, Romunije, Slovenije, Španije, Švedske, Francije, Nizozemske, Belgije, Luksemburga, Slovaške, Norveške, Turčije, Republike Severne Makedonije, Islandije, Črne gore in Srbije v okviru sporazuma o dodelitvi sredstev št. 101101903.