Conas a d’úsáideamar WebAssembly chun feidhmchlár gréasáin a bhrostú 20 uair

Conas a d’úsáideamar WebAssembly chun feidhmchlár gréasáin a bhrostú 20 uair

Pléann an t-alt seo cás chun feidhmchlár brabhsálaí a bhrostú trí ríomhanna JavaScript a chur in ionad WebAssembly.

WebAssembly - cad é?

I mbeagán focal, is formáid teagaisc dhénártha é seo do mheaisín fíorúil atá bunaithe ar chruach. Is minic a dtugtar Wasm (ainm gearr) mar theanga ríomhchlárúcháin, ach ní hé. Déantar an fhormáid treoracha a fhorghníomhú sa bhrabhsálaí in éineacht le JavaScript.

Tá sé tábhachtach gur féidir WebAssembly a fháil trí fhoinsí a thiomsú i dteangacha ar nós C/C++, Rust, Go. Anseo úsáidtear clóscríobh staitistiúil agus an tsamhail chuimhne chomhréidh mar a thugtar air. Stóráiltear an cód, mar a luadh thuas, i bhformáid dhénártha dhlúth, rud a fhágann go bhfuil sé beagnach chomh tapa agus an t-iarratas a rith ag baint úsáide as an líne ordaithe. Mar thoradh ar na cumais seo tháinig méadú ar an éileamh atá ar WebAssembly.

Meabhraímid: do léitheoirí uile "Habr" - lascaine de 10 rúbal nuair a chláraíonn siad in aon chúrsa Scilbox ag baint úsáide as an gcód bolscaireachta "Habr".

Molann Skillbox: Cúrsa praiticiúil "Forbróir Soghluaiste OCP".

Faoi láthair, úsáidtear Wasm i go leor feidhmchlár, ó chluichí mar Doom 3 go feidhmchláir a sheoltar ar an ngréasán mar Autocad agus Figma. Úsáidtear Wasm freisin i réimsí mar ríomhaireacht gan fhreastalaí.

Soláthraíonn an t-alt seo sampla de Wasm a úsáid chun seirbhís gréasáin anailísíochta a bhrostú. Ar mhaithe le soiléireacht, ghlacamar feidhmchlár oibre scríofa in C, a chuirtear le chéile i WebAssembly. Bainfear úsáid as an toradh in ionad chodanna de JS nach bhfuil ag feidhmiú.

Claochlú Feidhmchláir

Úsáidfidh an sampla an tseirbhís brabhsálaí fastq.bio, atá beartaithe le haghaidh géineolaithe. Ligeann an uirlis duit cáilíocht seicheamhú DNA (deciphering) a mheas.

Seo sampla den fheidhmchlár i ngníomh:

Conas a d’úsáideamar WebAssembly chun feidhmchlár gréasáin a bhrostú 20 uair

Ní fiú dul isteach i sonraí an phróisis mar go bhfuil siad casta go leor do dhaoine nach speisialtóirí iad, ach i mbeagán focal, is féidir le heolaithe an infographic thuas a úsáid chun a thuiscint an ndeachaigh an próiseas seicheamhaithe DNA go réidh agus cad iad na fadhbanna a d'eascair.

Tá roghanna eile ag an tseirbhís seo, cláir deisce. Ach ligeann fastq.bio duit do chuid oibre a bhrostú trí na sonraí a léirshamhlú. I bhformhór na gcásanna eile, ní mór duit a bheith in ann oibriú leis an líne ordaithe, ach níl an taithí riachtanach ag gach géiniteach.

Oibríonn gach rud go simplí. Sonraí a chuirtear i láthair i bhfoirm téacschomhad is ea an t-ionchur. Gintear an comhad seo trí shainuirlisí seicheamhaithe. Tá liosta de sheichimh DNA sa chomhad agus scór cáilíochta do gach núicléitíd. Is é .fastq an fhormáid comhaid, agus sin an fáth a fuair an tseirbhís a hainm.

Cur i bhfeidhm i JavaScript

Is é an chéad chéim don úsáideoir agus é ag obair le fastq.bio ná an comhad cuí a roghnú. Ag baint úsáide as an oibiacht Comhad, léann an feidhmchlár sampla randamach sonraí ó chomhad agus próiseálann an bhaisc sin. Is é post JavaScript anseo ná oibríochtaí teaghrán simplí a dhéanamh agus méadracht a ríomh. Is é ceann acu líon na núicléatídí A, C, G agus T ar blúirí DNA éagsúla.

Tar éis na táscairí riachtanacha a ríomh, déantar iad a léirshamhlú ag baint úsáide as Plotly.js, agus tosaíonn an tseirbhís ag obair le sampla sonraí nua. Déantar an smután chun cáilíocht an UX a fheabhsú. Má oibríonn tú leis na sonraí go léir ag an am céanna, reofaidh an próiseas ar feadh tamaill, ós rud é go dtógann na comhaid leis na torthaí seicheamhaithe suas na céadta ghigibheart de spás comhaid. Glacann an tseirbhís píosaí sonraí ó 0,5 go 1 MB agus oibríonn sé leo céim ar chéim, ag tógáil sonraí grafacha.

Seo mar a oibríonn sé:

Conas a d’úsáideamar WebAssembly chun feidhmchlár gréasáin a bhrostú 20 uair

Tá an t-algartam claochlaithe teaghrán sa dronuilleog dearg chun léirshamhlú a fháil. Is é seo an chuid den tseirbhís is déine ó thaobh ríomhaireacht de. Is fiú iarracht Wasm a chur ina ionad.

WebAsassembly á thástáil

Chun measúnú a dhéanamh ar an bhféidearthacht Wasm a úsáid, thosaigh an fhoireann tionscadail ag cuardach réitigh réamhdhéanta chun méadracht QC (QC - rialú cáilíochta) a chruthú bunaithe ar chomhaid fastq. Rinneadh an cuardach i measc uirlisí atá scríofa i C, C++ nó Rust, ionas gur féidir an cód a aistriú chuig WebAssembly. Ina theannta sin, níor cheart go mbeadh an uirlis “amh”; bhí gá le seirbhís a bhí tástáilte cheana féin ag eolaithe.

Mar thoradh air sin, rinneadh an rogha i bhfabhar seqtk. Tá an-tóir ar an bhfeidhmchlár, is foinse oscailte é, is é C an teanga foinse.

Sula ndéantar é a thiontú go Wasm, is fiú féachaint ar phrionsabal tiomsaithe seqtk don deasc. De réir an Makefile, seo an méid atá uait:

# Compile to binary
$ gcc seqtk.c 
   -o seqtk 
   -O2 
   -lm 
   -lz

I bprionsabal, is féidir leat seqtk a thiomsú ag baint úsáide as Emscripten. Mura bhfuil sé ann, déanaimid é a dhéanamh. Íomhá docker.

$ docker pull robertaboukhalil/emsdk:1.38.26
$ docker run -dt --name wasm-seqtk robertaboukhalil/emsdk:1.38.26

Más mian leat Is féidir leat é a chur le chéile tú féin, ach tógann sé am.

Taobh istigh de choimeádán, is féidir leat emcc a úsáid go héasca mar mhalairt ar gcc:

# Compile to WebAssembly
$ emcc seqtk.c 
    -o seqtk.js 
    -O2 
    -lm 
    -s USE_ZLIB=1 
    -s FORCE_FILESYSTEM=1

Athruithe íosta:

In ionad aschuir go comhad dénártha, úsáideann Emscripten .wasm agus .js chun na comhaid a ghiniúint, a úsáidtear chun modúl WebAssemby a rith.

Úsáidtear an bhratach USE_ZLIB chun tacú leis an leabharlann zlib. Tá an leabharlann scaipthe agus aistrithe chuig WebAssembly, agus tá Emscripten san áireamh sa tionscadal.

Tá córas comhaid fhíorúil Emscriptten i ngníomh. seo FS cosúil le POSIX, ag rith i RAM taobh istigh den bhrabhsálaí. Nuair a dhéantar an leathanach a athnuachan, glantar an chuimhne.

Chun a thuiscint cén fáth a bhfuil gá le córas comhaid fíorúil, is fiú an bealach a ritheann tú seqtk ón líne ordaithe a chur i gcomparáid leis an mbealach a ritheann tú modúl tiomsaithe WebAssembly.

# On the command line
$ ./seqtk fqchk data.fastq
 
# In the browser console
> Module.callMain(["fqchk", "data.fastq"])

Is gá rochtain a fháil ar an gcóras comhad fíorúil ionas nach ndéanfar seqtk a athscríobh le haghaidh teaghrán seachas ionchur comhaid. Sa chás seo, taispeántar an blúire sonraí mar chomhad data.fastq sa FS fíorúil le glao go príomh() seqtk air.

Seo an ailtireacht nua:

Conas a d’úsáideamar WebAssembly chun feidhmchlár gréasáin a bhrostú 20 uair

Léiríonn an figiúr, in ionad ríomhanna sa phríomhshnáithe brabhsálaí, Oibrithe Gréasáin. Ligeann an modh seo duit ríomhaireachtaí a dhéanamh i snáithe cúlra gan cur isteach ar fhreagrúlacht an bhrabhsálaí. Bhuel, cuireann rialtóir WebWorker tús leis an Oibrí, ag bainistiú a idirghníomhaíochta leis an bpríomhshnáithe.

Reáchtáiltear an t-ordú seqtk ag baint úsáide as Worker ar an gcomhad gléasta. Tar éis don Oibrí é a chur i gcrích, táirgeann an tOibrí toradh i bhfoirm Geallta. Nuair a fhaigheann an príomhshnáithe teachtaireacht, úsáidtear an toradh chun na graif a nuashonrú. Agus mar sin de i leaganacha éagsúla.

Cad faoi fheidhmíocht WebAssembly?

D'fhonn an t-athrú feidhmíochta a mheas, d'úsáid an fhoireann tionscadail na hoibríochtaí léite in aghaidh an tsoicind. Ní chuirtear san áireamh an t-am a thógann sé graif idirghníomhacha a thógáil toisc go n-úsáideann an dá fheidhmiú JavaScript.

Agus an réiteach lasmuigh den bhosca á úsáid, bhí an méadú feidhmíochta naoi n-uaire.

Conas a d’úsáideamar WebAssembly chun feidhmchlár gréasáin a bhrostú 20 uair

Is toradh iontach é seo, ach, mar a tharla, tá deis ann é a bharrfheabhsú freisin. Is é an fírinne nach n-úsáideann seqtk líon mór de thorthaí anailíse QC, ionas gur féidir iad a scriosadh. Má dhéanann tú é seo, feabhsaítear an toradh faoi 13 huaire i gcomparáid le JS.

Conas a d’úsáideamar WebAssembly chun feidhmchlár gréasáin a bhrostú 20 uair

Baineadh amach é ach trácht a dhéanamh ar na horduithe printf().

Ach ní hé sin go léir. Is é an fírinne, ag an gcéim seo, go bhfaigheann fastq.bio na torthaí anailíse trí ghlao a chur ar fheidhmeanna éagsúla C. Ríomhann gach ceann acu a shraith saintréithe féin, ionas go léifear gach blúire den chomhad faoi dhó.

Chun an fhadhb seo a réiteach, socraíodh dhá fheidhm a chomhcheangal i gceann amháin. Mar thoradh air sin, tháinig méadú 20 uair ar tháirgiúlacht.

Conas a d’úsáideamar WebAssembly chun feidhmchlár gréasáin a bhrostú 20 uair

Is fiú a thabhairt faoi deara nach féidir toradh den sórt sin a bhaint amach i gcónaí. I gcásanna áirithe, beidh an fheidhmíocht titim, mar sin is fiú a mheas gach cás.

Mar chonclúid, is féidir linn a rá go dtugann Wasm deis chun feidhmíocht iarratais a fheabhsú, ach ní mór duit é a úsáid go ciallmhar.

Molann Skillbox:

Foinse: will.com

Add a comment