{"id":"https://openalex.org/W2133352531","doi":"https://doi.org/10.1145/2716282.2716290","title":"Forma: a DSL for image processing applications to target GPUs and multi-core CPUs","display_name":"Forma: a DSL for image processing applications to target GPUs and multi-core CPUs","publication_year":2015,"publication_date":"2015-02-03","ids":{"openalex":"https://openalex.org/W2133352531","doi":"https://doi.org/10.1145/2716282.2716290","mag":"2133352531"},"language":"en","primary_location":{"id":"doi:10.1145/2716282.2716290","is_oa":false,"landing_page_url":"https://doi.org/10.1145/2716282.2716290","pdf_url":null,"source":null,"license":null,"license_id":null,"version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"Proceedings of the 8th Workshop on General Purpose Processing using GPUs","raw_type":"proceedings-article"},"type":"article","indexed_in":["crossref"],"open_access":{"is_oa":false,"oa_status":"closed","oa_url":null,"any_repository_has_fulltext":false},"authorships":[{"author_position":"first","author":{"id":"https://openalex.org/A5023732985","display_name":"M. Ravishankar","orcid":null},"institutions":[{"id":"https://openalex.org/I4210127875","display_name":"Nvidia (United States)","ror":"https://ror.org/03jdj4y14","country_code":"US","type":"company","lineage":["https://openalex.org/I4210127875"]},{"id":"https://openalex.org/I1304085615","display_name":"Nvidia (United Kingdom)","ror":"https://ror.org/02kr42612","country_code":"GB","type":"company","lineage":["https://openalex.org/I1304085615","https://openalex.org/I4210127875"]}],"countries":["GB","US"],"is_corresponding":true,"raw_author_name":"Mahesh Ravishankar","raw_affiliation_strings":["NVIDIA, USA","[NVIDIA, USA]"],"affiliations":[{"raw_affiliation_string":"NVIDIA, USA","institution_ids":["https://openalex.org/I4210127875"]},{"raw_affiliation_string":"[NVIDIA, USA]","institution_ids":["https://openalex.org/I1304085615"]}]},{"author_position":"middle","author":{"id":"https://openalex.org/A5047990794","display_name":"Justin Holewinski","orcid":null},"institutions":[{"id":"https://openalex.org/I1304085615","display_name":"Nvidia (United Kingdom)","ror":"https://ror.org/02kr42612","country_code":"GB","type":"company","lineage":["https://openalex.org/I1304085615","https://openalex.org/I4210127875"]},{"id":"https://openalex.org/I4210127875","display_name":"Nvidia (United States)","ror":"https://ror.org/03jdj4y14","country_code":"US","type":"company","lineage":["https://openalex.org/I4210127875"]}],"countries":["GB","US"],"is_corresponding":false,"raw_author_name":"Justin Holewinski","raw_affiliation_strings":["NVIDIA, USA","[NVIDIA, USA]"],"affiliations":[{"raw_affiliation_string":"NVIDIA, USA","institution_ids":["https://openalex.org/I4210127875"]},{"raw_affiliation_string":"[NVIDIA, USA]","institution_ids":["https://openalex.org/I1304085615"]}]},{"author_position":"last","author":{"id":"https://openalex.org/A5077691647","display_name":"Vinod Grover","orcid":null},"institutions":[{"id":"https://openalex.org/I1304085615","display_name":"Nvidia (United Kingdom)","ror":"https://ror.org/02kr42612","country_code":"GB","type":"company","lineage":["https://openalex.org/I1304085615","https://openalex.org/I4210127875"]},{"id":"https://openalex.org/I4210127875","display_name":"Nvidia (United States)","ror":"https://ror.org/03jdj4y14","country_code":"US","type":"company","lineage":["https://openalex.org/I4210127875"]}],"countries":["GB","US"],"is_corresponding":false,"raw_author_name":"Vinod Grover","raw_affiliation_strings":["NVIDIA, USA","[NVIDIA, USA]"],"affiliations":[{"raw_affiliation_string":"NVIDIA, USA","institution_ids":["https://openalex.org/I4210127875"]},{"raw_affiliation_string":"[NVIDIA, USA]","institution_ids":["https://openalex.org/I1304085615"]}]}],"institutions":[],"countries_distinct_count":2,"institutions_distinct_count":3,"corresponding_author_ids":["https://openalex.org/A5023732985"],"corresponding_institution_ids":["https://openalex.org/I1304085615","https://openalex.org/I4210127875"],"apc_list":null,"apc_paid":null,"fwci":4.8447,"has_fulltext":false,"cited_by_count":29,"citation_normalized_percentile":{"value":0.95350095,"is_in_top_1_percent":false,"is_in_top_10_percent":true},"cited_by_percentile_year":{"min":89,"max":99},"biblio":{"volume":null,"issue":null,"first_page":"109","last_page":"120"},"is_retracted":false,"is_paratext":false,"is_xpac":false,"primary_topic":{"id":"https://openalex.org/T10054","display_name":"Parallel Computing and Optimization Techniques","score":0.9993000030517578,"subfield":{"id":"https://openalex.org/subfields/1708","display_name":"Hardware and Architecture"},"field":{"id":"https://openalex.org/fields/17","display_name":"Computer Science"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}},"topics":[{"id":"https://openalex.org/T10054","display_name":"Parallel Computing and Optimization Techniques","score":0.9993000030517578,"subfield":{"id":"https://openalex.org/subfields/1708","display_name":"Hardware and Architecture"},"field":{"id":"https://openalex.org/fields/17","display_name":"Computer Science"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}},{"id":"https://openalex.org/T10743","display_name":"Software Testing and Debugging Techniques","score":0.996399998664856,"subfield":{"id":"https://openalex.org/subfields/1712","display_name":"Software"},"field":{"id":"https://openalex.org/fields/17","display_name":"Computer Science"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}},{"id":"https://openalex.org/T10036","display_name":"Advanced Neural Network Applications","score":0.9894000291824341,"subfield":{"id":"https://openalex.org/subfields/1707","display_name":"Computer Vision and Pattern Recognition"},"field":{"id":"https://openalex.org/fields/17","display_name":"Computer Science"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}}],"keywords":[{"id":"https://openalex.org/keywords/computer-science","display_name":"Computer science","score":0.895977258682251},{"id":"https://openalex.org/keywords/compiler","display_name":"Compiler","score":0.7978639602661133},{"id":"https://openalex.org/keywords/domain-specific-language","display_name":"Domain-specific language","score":0.6908532977104187},{"id":"https://openalex.org/keywords/digital-subscriber-line","display_name":"Digital subscriber line","score":0.6860845685005188},{"id":"https://openalex.org/keywords/programming-language","display_name":"Programming language","score":0.5595768094062805},{"id":"https://openalex.org/keywords/parallel-computing","display_name":"Parallel computing","score":0.5276293158531189},{"id":"https://openalex.org/keywords/code-generation","display_name":"Code generation","score":0.5125360488891602},{"id":"https://openalex.org/keywords/optimizing-compiler","display_name":"Optimizing compiler","score":0.5048750042915344},{"id":"https://openalex.org/keywords/compile-time","display_name":"Compile time","score":0.44317278265953064},{"id":"https://openalex.org/keywords/syntax","display_name":"Syntax","score":0.43184927105903625},{"id":"https://openalex.org/keywords/program-optimization","display_name":"Program optimization","score":0.4179237186908722},{"id":"https://openalex.org/keywords/computer-architecture","display_name":"Computer architecture","score":0.36404532194137573},{"id":"https://openalex.org/keywords/operating-system","display_name":"Operating system","score":0.15228986740112305},{"id":"https://openalex.org/keywords/artificial-intelligence","display_name":"Artificial intelligence","score":0.10659730434417725}],"concepts":[{"id":"https://openalex.org/C41008148","wikidata":"https://www.wikidata.org/wiki/Q21198","display_name":"Computer science","level":0,"score":0.895977258682251},{"id":"https://openalex.org/C169590947","wikidata":"https://www.wikidata.org/wiki/Q47506","display_name":"Compiler","level":2,"score":0.7978639602661133},{"id":"https://openalex.org/C135257023","wikidata":"https://www.wikidata.org/wiki/Q691358","display_name":"Domain-specific language","level":2,"score":0.6908532977104187},{"id":"https://openalex.org/C201374245","wikidata":"https://www.wikidata.org/wiki/Q104534","display_name":"Digital subscriber line","level":2,"score":0.6860845685005188},{"id":"https://openalex.org/C199360897","wikidata":"https://www.wikidata.org/wiki/Q9143","display_name":"Programming language","level":1,"score":0.5595768094062805},{"id":"https://openalex.org/C173608175","wikidata":"https://www.wikidata.org/wiki/Q232661","display_name":"Parallel computing","level":1,"score":0.5276293158531189},{"id":"https://openalex.org/C133162039","wikidata":"https://www.wikidata.org/wiki/Q1061077","display_name":"Code generation","level":3,"score":0.5125360488891602},{"id":"https://openalex.org/C190902152","wikidata":"https://www.wikidata.org/wiki/Q1325106","display_name":"Optimizing compiler","level":3,"score":0.5048750042915344},{"id":"https://openalex.org/C200833197","wikidata":"https://www.wikidata.org/wiki/Q333707","display_name":"Compile time","level":3,"score":0.44317278265953064},{"id":"https://openalex.org/C60048249","wikidata":"https://www.wikidata.org/wiki/Q37437","display_name":"Syntax","level":2,"score":0.43184927105903625},{"id":"https://openalex.org/C139571649","wikidata":"https://www.wikidata.org/wiki/Q1156793","display_name":"Program optimization","level":3,"score":0.4179237186908722},{"id":"https://openalex.org/C118524514","wikidata":"https://www.wikidata.org/wiki/Q173212","display_name":"Computer architecture","level":1,"score":0.36404532194137573},{"id":"https://openalex.org/C111919701","wikidata":"https://www.wikidata.org/wiki/Q9135","display_name":"Operating system","level":1,"score":0.15228986740112305},{"id":"https://openalex.org/C154945302","wikidata":"https://www.wikidata.org/wiki/Q11660","display_name":"Artificial intelligence","level":1,"score":0.10659730434417725},{"id":"https://openalex.org/C26517878","wikidata":"https://www.wikidata.org/wiki/Q228039","display_name":"Key (lock)","level":2,"score":0.0},{"id":"https://openalex.org/C76155785","wikidata":"https://www.wikidata.org/wiki/Q418","display_name":"Telecommunications","level":1,"score":0.0}],"mesh":[],"locations_count":1,"locations":[{"id":"doi:10.1145/2716282.2716290","is_oa":false,"landing_page_url":"https://doi.org/10.1145/2716282.2716290","pdf_url":null,"source":null,"license":null,"license_id":null,"version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"Proceedings of the 8th Workshop on General Purpose Processing using GPUs","raw_type":"proceedings-article"}],"best_oa_location":null,"sustainable_development_goals":[{"score":0.4300000071525574,"id":"https://metadata.un.org/sdg/9","display_name":"Industry, innovation and infrastructure"}],"awards":[],"funders":[{"id":"https://openalex.org/F4320309480","display_name":"Nvidia","ror":"https://ror.org/03jdj4y14"},{"id":"https://openalex.org/F4320321033","display_name":"Svenska Forskningsr\u00e5det Formas","ror":"https://ror.org/03pjs1y45"}],"has_content":{"pdf":false,"grobid_xml":false},"content_urls":null,"referenced_works_count":22,"referenced_works":["https://openalex.org/W1782174992","https://openalex.org/W1979457157","https://openalex.org/W1983317091","https://openalex.org/W1993164261","https://openalex.org/W2001258868","https://openalex.org/W2003798513","https://openalex.org/W2032391783","https://openalex.org/W2034761517","https://openalex.org/W2055312318","https://openalex.org/W2103504761","https://openalex.org/W2104512032","https://openalex.org/W2110114082","https://openalex.org/W2136952590","https://openalex.org/W2145023731","https://openalex.org/W2149381887","https://openalex.org/W2151764765","https://openalex.org/W2154078685","https://openalex.org/W2155942864","https://openalex.org/W2162569557","https://openalex.org/W2166906890","https://openalex.org/W2293879958","https://openalex.org/W4285719527"],"related_works":["https://openalex.org/W2119542776","https://openalex.org/W2014596857","https://openalex.org/W2582410692","https://openalex.org/W2140083133","https://openalex.org/W1485300234","https://openalex.org/W2258960507","https://openalex.org/W2004337747","https://openalex.org/W4233359889","https://openalex.org/W3004536583","https://openalex.org/W1556068956"],"abstract_inverted_index":{"As":[0],"architectures":[1,94],"evolve,":[2],"optimization":[3,22],"techniques":[4,23],"to":[5,38,56,69,80,119,139,163,175,241,281],"obtain":[6,242],"good":[7],"performance":[8,244],"evolve":[9],"as":[10],"well.":[11],"Using":[12],"low-level":[13],"programming":[14],"languages":[15],"like":[16,123,156,191,268],"C/C++":[17],"typically":[18],"results":[19],"in":[20,131,143,151,205],"architecture-specific":[21],"getting":[24],"entangled":[25],"with":[26,198,222,250,263],"the":[27,45,71,78,96,173,215,228],"application":[28],"specification.":[29],"In":[30],"such":[31,279],"situations,":[32],"moving":[33],"from":[34,161],"one":[35],"target":[36,93],"architecture":[37],"another":[39],"usually":[40],"requires":[41],"a":[42,74,103,144,223],"reimplementation":[43],"of":[44,153,181,188,214,278],"entire":[46],"application.":[47],"Further,":[48],"several":[49,121,210],"compiler":[50,79,149,174],"transformations":[51],"are":[52,128],"rendered":[53],"ineffective":[54],"due":[55],"implementation":[57],"choices.":[58],"Domain-Specific":[59],"Languages":[60],"(DSL)":[61],"tackle":[62],"both":[63,111,246],"these":[64],"issues":[65],"by":[66,185],"allowing":[67,77],"developers":[68,240],"specify":[70,140],"computation":[72],"at":[73,95],"high":[75],"level,":[76],"handle":[81],"many":[82],"tedious":[83,154],"and":[84,113,184,248,270],"error-prone":[85],"tasks,":[86],"while":[87],"generating":[88],"efficient":[89,177,283],"code":[90,178,217],"for":[91,105],"multiple":[92],"same":[97,229],"time.":[98],"Here":[99],"we":[100],"present":[101],"Forma,":[102],"DSL":[104,225],"image":[106],"processing":[107],"applications":[108],"that":[109,226,236],"targets":[110,227],"CPUs":[112],"GPUs.":[114,195],"The":[115,147,169,196,212],"language":[116],"provides":[117],"syntax":[118],"express":[120],"operations":[122],"stencils,":[124],"sampling,":[125],"etc.":[126,168],"which":[127,199],"commonly":[129],"used":[130,265],"this":[132],"domain.":[133],"These":[134],"can":[135,202],"be":[136,203,260],"chained":[137],"together":[138],"complex":[141,200],"pipelines":[142,201],"concise":[145],"manner.":[146],"Forma":[148,206,238,258],"is":[150,207,218],"charge":[152],"tasks":[155],"memory":[157,193],"management,":[158],"data":[159],"transfers":[160],"host":[162],"device,":[164],"handling":[165],"boundary":[166],"conditions,":[167],"high-level":[170],"description":[171],"allows":[172,239],"generate":[176],"through":[179,209,220],"use":[180],"compile-time":[182],"analysis":[183],"taking":[186],"advantage":[187],"hardware":[189],"resources,":[190],"texture":[192],"on":[194,245],"ease":[197],"specified":[204],"demonstrated":[208],"examples.":[211],"efficiency":[213],"generated":[216],"evaluated":[219],"comparison":[221],"state-of-the-art":[224],"domain,":[230],"Halide.":[231],"Our":[232],"experimental":[233],"result":[234],"show":[235,256],"using":[237],"comparable":[243],"CPU":[247],"GPU":[249],"lesser":[251],"programmer":[252],"effort.":[253],"We":[254],"also":[255],"how":[257],"could":[259],"easily":[261],"integrated":[262],"widely":[264],"productivity":[266],"tools":[267,280],"Python":[269],"OpenCV.":[271],"Such":[272],"an":[273],"integration":[274],"would":[275],"allow":[276],"users":[277],"develop":[282],"implementations":[284],"easily.":[285]},"counts_by_year":[{"year":2025,"cited_by_count":2},{"year":2024,"cited_by_count":1},{"year":2023,"cited_by_count":2},{"year":2022,"cited_by_count":1},{"year":2021,"cited_by_count":1},{"year":2020,"cited_by_count":6},{"year":2019,"cited_by_count":1},{"year":2018,"cited_by_count":5},{"year":2017,"cited_by_count":1},{"year":2016,"cited_by_count":7},{"year":2015,"cited_by_count":2}],"updated_date":"2025-11-06T03:46:38.306776","created_date":"2025-10-10T00:00:00"}
