{"updated":"2025-01-19T20:01:56.461440+00:00","metadata":{"_oai":{"id":"oai:ipsj.ixsq.nii.ac.jp:00204920","sets":["934:935:9993:10211"]},"path":["10211"],"owner":"44499","recid":"204920","title":["Lift中間言語における動的長配列の追加"],"pubdate":{"attribute_name":"公開日","attribute_value":"2020-06-17"},"_buckets":{"deposit":"cb6a6d5a-5b81-4258-91d3-5e737e0112fa"},"_deposit":{"id":"204920","pid":{"type":"depid","value":"204920","revision_id":0},"owners":[44499],"status":"published","created_by":44499},"item_title":"Lift中間言語における動的長配列の追加","author_link":["508217","508219","508218","508216"],"item_titles":{"attribute_name":"タイトル","attribute_value_mlt":[{"subitem_title":"Lift中間言語における動的長配列の追加"},{"subitem_title":"Extending Lift Intermediate Language with Dynamic Length Arrays","subitem_title_language":"en"}]},"item_keyword":{"attribute_name":"キーワード","attribute_value_mlt":[{"subitem_subject":"[通常論文] GPU計算,コード生成,型理論,存在型,LIFT","subitem_subject_scheme":"Other"}]},"item_type_id":"3","publish_date":"2020-06-17","item_3_text_3":{"attribute_name":"著者所属","attribute_value_mlt":[{"subitem_text_value":"東京工業大学情報理工学院"},{"subitem_text_value":"東京工業大学情報理工学院"}]},"item_3_text_4":{"attribute_name":"著者所属(英)","attribute_value_mlt":[{"subitem_text_value":"School of Computing, Tokyo Institute of Technology","subitem_text_language":"en"},{"subitem_text_value":"School of Computing, Tokyo Institute of Technology","subitem_text_language":"en"}]},"item_language":{"attribute_name":"言語","attribute_value_mlt":[{"subitem_language":"jpn"}]},"item_publisher":{"attribute_name":"出版者","attribute_value_mlt":[{"subitem_publisher":"情報処理学会","subitem_publisher_language":"ja"}]},"publish_status":"0","weko_shared_id":-1,"item_file_price":{"attribute_name":"Billing file","attribute_type":"file","attribute_value_mlt":[{"url":{"url":"https://ipsj.ixsq.nii.ac.jp/record/204920/files/IPSJ-TPRO1303002.pdf","label":"IPSJ-TPRO1303002.pdf"},"date":[{"dateType":"Available","dateValue":"2022-06-17"}],"format":"application/pdf","billing":["billing_file"],"filename":"IPSJ-TPRO1303002.pdf","filesize":[{"value":"513.3 kB"}],"mimetype":"application/pdf","priceinfo":[{"tax":["include_tax"],"price":"660","billingrole":"5"},{"tax":["include_tax"],"price":"330","billingrole":"6"},{"tax":["include_tax"],"price":"0","billingrole":"15"},{"tax":["include_tax"],"price":"0","billingrole":"44"}],"accessrole":"open_date","version_id":"26c9cbb1-794d-4a1c-8d63-e47d1b8bfc03","displaytype":"detail","licensetype":"license_note","license_note":"Copyright (c) 2020 by the Information Processing Society of Japan"}]},"item_3_creator_5":{"attribute_name":"著者名","attribute_type":"creator","attribute_value_mlt":[{"creatorNames":[{"creatorName":"新美, 和生"}],"nameIdentifiers":[{}]},{"creatorNames":[{"creatorName":"増原, 英彦"}],"nameIdentifiers":[{}]}]},"item_3_creator_6":{"attribute_name":"著者名(英)","attribute_type":"creator","attribute_value_mlt":[{"creatorNames":[{"creatorName":"Kazuki, Niimi","creatorNameLang":"en"}],"nameIdentifiers":[{}]},{"creatorNames":[{"creatorName":"Hidehiko, Masuhara","creatorNameLang":"en"}],"nameIdentifiers":[{}]}]},"item_3_source_id_9":{"attribute_name":"書誌レコードID","attribute_value_mlt":[{"subitem_source_identifier":"AA11464814","subitem_source_identifier_type":"NCID"}]},"item_resource_type":{"attribute_name":"資源タイプ","attribute_value_mlt":[{"resourceuri":"http://purl.org/coar/resource_type/c_6501","resourcetype":"journal article"}]},"item_3_source_id_11":{"attribute_name":"ISSN","attribute_value_mlt":[{"subitem_source_identifier":"1882-7802","subitem_source_identifier_type":"ISSN"}]},"item_3_description_7":{"attribute_name":"論文抄録","attribute_value_mlt":[{"subitem_description":"LIFT ILはGPGPUプログラムのための配列指向の中間言語である.LIFT コンパイラは高級言語プログラムをOpenCLプログラムに変換する際に,中間言語であるLIFT IL上でハードウェア依存の最適化を行う.一方,LIFT ILには動的に長さが決まる配列を表現できないという問題がある.なぜならばLIFT ILは静的に型付けされる関数型言語で,配列の長さをシンボルとして推論する依存型システムを備えており,静的にすべての配列長のシンボルが決定しているからである.本論文では,LIFT ILを存在型で拡張することで動的長配列を扱う方法を提案する.その際,型から配列長を隠蔽・展開する操作を適切な場所に挿入する必要があるが,それらの自動挿入方法を提案する.この提案に基づいて,LIFT ILのコンパイラを作成し,そのうえでフィルター関数を実装した.さらに,Project Euler問題集を用いて,拡張したLIFT ILコンパイラで動的長配列を扱うプログラムが記述・コンパイル・実行できることを確かめた.","subitem_description_type":"Other"}]},"item_3_description_8":{"attribute_name":"論文抄録(英)","attribute_value_mlt":[{"subitem_description":"LIFT IL is an array-oriented intermediate language (IL) for GPGPU programming. The LIFT compiler translates a high-level language program into LIFT IL, applies hardware-specific optimizations, and then generates an OpenCL program. The IL has a dependent type system that infers the length of arrays as a symbol. This forces every array to have a length that can be statically determined, preventing one from expressing arrays having a dynamic length. In this paper, we extend LIFT IL to support arrays having a dynamic length by using existential types. We also propose an algorithm that automatically inserts pack and unpack operations, which are necessary for existential types. Based on the proposal, we implemented a LIFT IL compiler and added a filter function. In order to assess the usefulness to real world problems, we confirmed the problems that require the dynamic length array in a subset of Project Euler can successfully be written, compiled and executed in the extended LIFT IL compiler.","subitem_description_type":"Other"}]},"item_3_biblio_info_10":{"attribute_name":"書誌情報","attribute_value_mlt":[{"bibliographicPageEnd":"12","bibliographic_titles":[{"bibliographic_title":"情報処理学会論文誌プログラミング(PRO)"}],"bibliographicPageStart":"1","bibliographicIssueDates":{"bibliographicIssueDate":"2020-06-17","bibliographicIssueDateType":"Issued"},"bibliographicIssueNumber":"3","bibliographicVolumeNumber":"13"}]},"relation_version_is_last":true,"weko_creator_id":"44499"},"created":"2025-01-19T01:07:07.023856+00:00","id":204920,"links":{}}