● SWIG - Simplified Wrapper and Interface Generator ● + google a diskusní fóra ● nástroj zjednodušující (a sjednocující)

Slides:



Advertisements
Podobné prezentace
Dynamické dokumenty na straně klienta Informatika pro ekonomy II.
Advertisements

Seminář C++ 5. cvičení Dědičnost Ing. Jan Mikulka.
Pole, ukazatele a odkazy
ÚVOD DO CPP 7 Dědičnost - pokračování
BLIŽŠÍ POHLED NA TŘÍDY, DĚDIČNOST - úvod
PJV151 Vnořené a vnitřní členy mohou být členy tříd a interfejsů. Je-li X obalem Y a Y je obalem Z, pak Z získá jméno X$Y$Z - kompilací vzniknou classy.
Preprocess Úvod do tvorby funkcí Princip preprocesoringu Direktivy preprocesoru Podmíněný překlad Základy tvorby funkcí Zjednodušený popis principu předávaní.
Cvičení 2 Proměnné(jednoduché a složené) a konstanty První program Zápis výrazů.
Programování v C++ Cvičení.
Ensemble pro rychlejší tvorbu Caché aplikací Využijte infrastrukturu Ensemble pro své aplikace.
J a v a Začínáme programovat Lucie Žoltá Přetěžování metod, rekurze.
J a v a Začínáme programovat Lucie Žoltá metody, objekty, konstruktor.
J a v a Začínáme programovat Lucie Žoltá. Odkazy - oficiální stránky (překladače, help, metody, vývojové prostředí NetBeans,...)
Chain of responsibility Martin Malý prezentace na předmět Návrhové vzory (PRG024) na MFF UK
State. State – kontext a problém Kontext  chování objektu má záviset na jeho stavu, který se typicky mění za běhu Neflexibilní řešení  metody obsahují.
Páté cvičení Dědičnost Interface Abstarktní třídy a metody
Seminář C++ 9. cvičení Šablony Ing. Jan Mikulka. Šablony ► template – vzory, podle kterých může překladač tvořit skupiny podobných tříd nebo funkcí, které.
Kapitoly z metodologie pedagogického výzkumu Prostředí pro výuku algoritmů Vojtěch Ouška.
Seminář C cvičení STL, Trolltech Ing. Jan Mikulka.
Softwareová architektura
Objektové programování
Rozšíření jednouživatelské verze IS na víceuživatelskou Prezentace Diplomové práce Autor : Libor Tomášek Spoluautoři : Pobucký M., Drábek L. Vedoucí :
BAKALÁŘSKÁ PRÁCE Tomáš Janda
Jedenácté cvičení Vlákna. Java cv112 Vlákna Operační systém Mutitasking – více úloh se v operačním programu vykonává „současně“ Java Multithreading -
Seminář C cvičení Obsluha výjimek Ing. Jan Mikulka.
PRÁCE S VLÁKNY A APLIKAČNÍ DOMÉNY V.NET FRAMEWORK APLIKACÍCH Architektura technologie.NET Jan Martinovič, FEI - Katedra Informatiky.
Strategy. Strategy – „All-in-1“ na začátek class AStrategy { public: virtual void Algorithm()=0; protected: AStrategy(); }; class SpecificStrategy: public.
Seminář C++ 4. cvičení Objekty Ing. Jan Mikulka. Co je objekt ► obraz třídy i instance ► třída – definovaná za pomocí klíčového slova class ► instance.
6. cvičení Polymorfismus
Alg91 Textové soubory Na rozdíl od jiných typů souborů jsou textové soubory určené pro gramotné lidské oko. Textový soubor je posloupnost znaků členěná.
Počítače a programování 1
PB161 Právo friend, přetěžování operátorů, přetypování PB161 | Friend, operátory PB161 – Programování v jazyce C++ Objektově Orientované Programování.
Memento. Obnovení operačního systému ( Windows | Linux...) Všichni víme, co jsou transekce v databázi Memento – zálohování databáze.
OSNOVA: a)Programování se soubory b)Záloha databáze v souboru c) Příklady Jiří Šebesta Ústav radioelektroniky, FEKT VUT v Brně Počítače a programování.
KIV/PPA1 cvičení 8 Cvičící: Pavel Bžoch. Osnova cvičení Objekty v Javě Třída Konstruktor Metody Metody a proměnné třídy x instance Program sestávající.
OSNOVA: a) Úvod do OOPb) Třídy bez metod c) Třídy s metodamid) Konstruktory a destruktory e) Metody constf) Knihovní třídy g) Třídy ve tříděh) Přetížení.
IB111 Programování a algoritmizace
Návrh a tvorba WWW Přednáška 5 Úvod do jazyka PHP.
OSNOVA: a) Přetížení členských funkcí b) Dědičnost tříd Jiří Šebesta Ústav radioelektroniky, FEKT VUT v Brně Počítače a programování 2 pro obor EST BPC2E.
Dědičnost - inheritance dědičnost je jednou z forem znovupoužitelnosti dědičnost je jednou z forem znovupoužitelnosti B A Třída A je předkem třídy B Třída.
13/04/20151 Datový typ třída – class (1) Datový typ definovaný uživatelem Poskytuje mechanismus pro modelování entit, s nimiž manipulují aplikace Charakterizuje.
HUMUSOFT s.r.o. Konference WITNESS Setkání uživatelů programu WITNESS Hotel Valáškův Grunt, Kozov
Programovací jazyk Haskell doc. Dr. Ing. Miroslav Beneš  katedra informatiky, A-1007 
Metodika objektového přístupu při tvorbě překladačů. Marek Běhálek Informatika a aplikovaná matematika FEI VŠB-TU Ostrava.
Šesté cvičení Výjimky Balíky.
Principy OOP Objektově orientované programování vychá-zí ze třech základních principů (rysů): zapouzdření (encapsulation) dědičnost (inheritance) polymorfismus.
Multithread programming Java vs. OpenMP Pavel Zavoral Martin Kugler.
Import záznamů diplomových prací nové řešení Antonín Vaishar, SUAleph, 26. –
C – jak na procedury Mgr. Lenka Švancarová. C – procedury #include int main() { printf("Ahoj\n"); return(0); } #include void pozdrav(void) { printf("Ahoj\n");
FEL Komunikátor. Memory Leak program konsumuje operační paměť, kterou neumožňuje uvolnit o uvolnění paměti stará Garbage Collector ▫plně v režii Java.
ZÁKLADNÍ POJMY. ZDROJOVÝ TEXT PROGRAMU Tvoří: klíčová slova komentáře identifikátory.
Jazyk C A0B36PRI - PROGRAMOVÁNÍ Část II.
Service layer. Service layer – úvod Problém  Vytvoření API aplikace  Odstínění bussiness logiky a transakčního chování od zbytku aplikace  Kam s aplikační.
Template Method. Motivační příklad – reálný svět Čaj 1) Uvař vodu 2) Dej do hrnku sáček čaje 3) Zalij hrnek 4) Přisyp cukr a vymačkej citrón Káva 1) Uvař.
Uživatelská rozhraní Cvičení 12a Martin Němec A
Uživatelská rozhraní Uživatelská rozhraní 10. cvičení Martin Němec A
CHARLES UNIVERSITY IN PRAGUE faculty of mathematics and physics Jazyk C# a platforma.NET ZS 2015/2016 Pavel Ježek
Programování v jazyce C++ Speciality jazyka C++, úvod do OOP.
Y36PJC Programování v jazyce C/C++
Moduly.
Jazyk C# a platforma .NET ZS 2016/2017
Y36PJC Programování v jazyce C/C++
Algoritmizace a programování
NÁZEV ŠKOLY: Střední odborná škola Net Office, spol. s r. o
Bridge.
RUBY.
Bloky – tvorba a vkládání
C# přehled vlastností.
Přednáška 9 Triggery.
Composite “Spojuj a panuj”.
Transkript prezentace:

● SWIG - Simplified Wrapper and Interface Generator ● + google a diskusní fóra ● nástroj zjednodušující (a sjednocující) napojení knihoven v C/C++ na jazyky:  python(odzkoušeno)  perl  java (odzkoušeno)  tcl, csharp, ruby, php, a další Wrapovani C/C++ pro Python - SWIG

SWIG – základní filosofie ● pro C++ třídu je dobré napsat soubor rozhraní modul.i ve formátu SWIGu – viz dále ● na soubory rozhraní se pustí swig -python -I[...] -c++ -o modul_wrapp.cpp modul.i který vygeneruje  soubor který se „includuje“ v cílovém jazyce (např. modul.py)  soubor modul_wrap.cpp, který je třeba přeložit (liší se v závislosti na cílovém jazyce) ● je třeba vygenerovat dynamickou knihovnu z wrapované knihovny, vygenerovaného.cpp a z knihovny cílového jazyka (někdy není ale třeba)

Seznamovací příklad ● původní třída (pokus.h): class Pokus { public: int metoda1(int a, float b); void metoda2(int a); float metoda3(char * str); private: jakékoli další metody a atributy }; ● soubor rozhraní (pokus.i) %module pokus { include ''pokus.h'' } class Pokus { public: int metoda1(int a, float b); void metoda2(int a); };

SWIG – rozšíření metod ● je možné možnosti původní třídy rozšířit nebo zjednodušit volání jejich metod: class Pokus { public: int metoda1(int a, float b); void metoda2(int a); %extend { void metoda4(float b) { self->metoda1(123, b); } } }; ● tělo rozšiřující metody lze napsat přímo do sekce %extend{}

SWIG – šablony ● v.i souboru se definují stejně jako „normální“ třídy: template class Sablona { public: int metoda1(Type a); void metoda2(Type a, int b); }; ● je možné je i rozšiřovat %extend{} ● je ale nutné v.i specifikovat varianty šablon, které se pak budou volat v cílovém jazyce: %tempate(SablonaLong) Sablona %tempate(SablonaChar) Sablona

SWIG – „vychytávky“ ● metody vracející alokované objekty: %newobject trida::metoda; (stačí jméno metody) ● konstanty (definované jako #define VALUE 10) %constant int value = VALUE; ● další speciality – dotaz na mě a pokud nebudu vědět tak gooooooogle a diskusní fóra

SWIG – máme wrapnuté pro python ● fonetickou transkripci z ERISe ● modul generování prozodie (monotónní, pravidlová) ● modul syntézy ● pokud chcete použít bude lepší osobní konzultace – dám wrapnutou knihovnu + ukázkový příklad

python + paralelní akce ● pokud máte utilitky v pythonu které něco dělají (výpočty nebo analýza souborů), je možné je snadno spustit paralelně na Konosu ● udělal jsem modul mpi_pypar.py který implementuje základní filozofii modelu „farmer-worker“ ● použití velmi jednoduché – stačí implementovat 2 metody pozn. „farmer“ rozděluje úlohy paralelně běžícím „workerům“, kteří je zpracovávají a posílají výsledky zpět „farmerovi“

mpi_pypar.py – ukázka Farmer: import mpi_pypar # class MyFarmer(mpi_pypar.Farmer) : # Pretizena metoda: def give_tasks(self) : res = 0 # Zadavej ukoly for i in range(5000) : res += self.give_task( ("sum ", […]) ) # cekej, na zbytek vysledku a pricti reslts = self.wait_all() for r in reslts : res += r Worker: import mpi_pypar # class MyWorker(mpi_pypar.Worker) : # Pretizena metoda: def do_task(self, taskData) : return math.sum(taskData[1])

mpi_pypar.py – ukázka ● Spusti se: mpi_pypar.start(MyFarmer(), MyWorker()) ● Celý skript je (v PBS) třeba spouštět příkazem mpirun ● Další metody:  mpi_pypar.Farmer.num_workers()  mpi_pypar.Worker.get_id() ● Více informací viz osobní konzultace