1 पॉइंट द्वारा GN⁺ 2024-04-07 | 1 टिप्पणियां | WhatsApp पर शेयर करें

Fortran और WebAssembly का संयोजन

  • Fortran 1957 में पहली बार सामने आई एक पुरानी प्रोग्रामिंग भाषा है, और यह C भाषा, Intel 4004 CPU, तथा IBM System/360 mainframe computer से भी पुरानी है.
  • Fortran का उपयोग वैज्ञानिक और इंजीनियरिंग applications में computation-intensive कामों के लिए होता रहा है, और कुछ लोग इसे numerical operations में C से अधिक efficient मानते हैं.
  • यह ब्लॉग पोस्ट बताती है कि मौजूदा Fortran code को WebAssembly में compile करके web browser में कैसे चलाया जा सकता है.

समस्या क्या है?

  • Fortran को WebAssembly में compile करने के कई तरीके हैं, लेकिन कोई भी तरीका सभी features को पूरी तरह support नहीं करता.
  • हर तरीके की अपनी कमियाँ हैं, और यह कोई सरल plug-and-play solution नहीं है.

Compiler सारांश

  • LLVM-आधारित Fortran compilers में कुछ बदलाव हुए हैं.
  • f2c utility Fortran 77 को C code में बदलती है, लेकिन यह modern Fortran code के साथ compatible नहीं है.
  • LFortran compiler अब कई features support करता है, लेकिन फिर भी कुछ projects में समस्याएँ आ सकती हैं.
  • Dragonegg, GCC का एक plugin है जो LLVM IR बनाता है, लेकिन इसके लिए GCC और LLVM के पुराने versions चाहिए.
  • Classic Flang 32-bit output support नहीं करता, और LLVM Flang अभी default रूप से WebAssembly output generate नहीं करता.

LLVM Flang के साथ WebAssembly build और उपयोग

  • WebAssembly target लागू करने के लिए LLVM Flang source में बदलाव करने पड़ते हैं.
  • LLVM की modular design का उपयोग करके Flang frontend और WebAssembly backend का इस्तेमाल किया जा सकता है.

C से Fortran subroutine को call करना

  • इसमें यह दोहराया गया है कि Fortran subroutine को C program के हिस्से के रूप में compile और link कैसे किया जाए.

LLVM Flang पर वापस

  • LLVM Flang compiler से Fortran subroutine को compile किया जा सकता है, लेकिन क्योंकि WebAssembly target अभी लागू नहीं हुआ है, source code पर patch लगाना पड़ता है.

JavaScript से Fortran routine को call करना

  • Emscripten का उपयोग करके Fortran object को link किया जा सकता है और JavaScript से सीधे call किया जा सकता है.

Fortran runtime library: "Hello, World!" तक की यात्रा

  • इसमें उन समस्याओं का वर्णन है जो Fortran में "Hello, World!" program build करने की कोशिश करते समय आती हैं.
  • LLVM Fortran runtime library को WebAssembly के लिए compile करना पड़ता है.

GN⁺ की राय

  • यह लेख दिखाता है कि Fortran जैसी पारंपरिक भाषा को आधुनिक web technologies के साथ integrate करने की कोशिश कैसे की जा रही है. ऐसा approach मौजूदा, प्रमाणित numerical computing libraries को web तक लाने में उपयोगी हो सकता है.
  • Fortran को WebAssembly में compile करने की प्रक्रिया अच्छी तरह दिखाती है कि मौजूदा codebase को नए platform पर port करते समय कैसी चुनौतियाँ आती हैं. खासकर cross-compiling से जुड़ी समस्याएँ दूसरी भाषाओं या platforms पर porting करते समय भी महत्वपूर्ण रहती हैं.
  • यह तकनीक दिलचस्प है, लेकिन वास्तव में web पर high-performance numerical computing workloads चलाने में अभी भी practical limitations हैं. WebAssembly अभी पारंपरिक native applications जितनी performance न दे पाए.
  • LLVM Flang का development बहुत सक्रिय है, और ऐसी development efforts से Fortran community पर सकारात्मक असर पड़ने की उम्मीद है. हालांकि, इस लेख में बताई गई विभिन्न समस्याएँ यह भी दिखाती हैं कि अभी कई चुनौतियाँ हल होना बाकी हैं.
  • यह लेख उन developers के लिए उपयोगी जानकारी देता है जो Fortran को web technologies के साथ integrate करना चाहते हैं, खासकर उन लोगों के लिए जो numerical analysis या scientific computing के क्षेत्र में web-based tools बनाने पर विचार कर रहे हैं.

1 टिप्पणियां

 
GN⁺ 2024-04-07
Hacker News राय
  • जॉर्ज ने WebR प्रोजेक्ट में वेब ब्राउज़र में R चलाने के लिए काम करते हुए Fortran पर जो अध्ययन किया, उस पर चर्चा

    • R source code में काफ़ी मात्रा में Fortran code शामिल है
    • मूल रूप से WebR, Fortran को C में बदलने वाले f2c का उपयोग करता था, लेकिन LLVM Flang के patch के ज़रिए अब इसे असली Fortran compiler से build किया जा सकता है
    • जॉर्ज ने ब्लॉग पोस्ट में इसे सीधे नहीं कहा, लेकिन उम्मीद है कि Flang उसके patch को स्वीकार करेगा या उससे बेहतर patch लागू करेगा
    • अगर ऐसे patch को अलग से maintain करने की ज़रूरत न रहे और बिना बदले हुए Flang से wasm में compile करना संभव हो जाए, तो इससे Fortran इस्तेमाल करने वाले दूसरे projects को भी मदद मिलेगी
  • 20 साल पहले Xilinx में FORTRAN compiler पर काम करने का अनुभव साझा किया गया

    • सबसे यादगार बात यह थी कि f2c.h header file में 'barf' नाम की definition शामिल थी
  • LLVM project के नवीनतम source का उपयोग करके f18 build करने की सिफारिश

    • कहा गया कि LLVM project बहुत तेज़ी से आगे बढ़ता है, इसलिए उन समस्याओं को debug करना जो पहले ही हल हो चुकी हैं, या उन features को मिस कर देना जो पहले से implement हैं, समय की बर्बादी है
  • "सबसे सरल non-trivial example" वाले approach से समझाने के तरीके की प्रशंसा

    • कहा गया कि "JavaScript से BLAS function call" जैसी ठोस समस्या के आधार पर बहुत कुछ सीखा जा सका
  • WebAssembly development के बारे में जानकारी की कमी का ज़िक्र

    • यह सवाल उठाया गया कि WebAssembly अभी उपभोक्ताओं को वास्तव में कुछ दे सकता है या नहीं, या फिर क्या यह सब सचमुच portable programs के भविष्य के लिए बुनियाद तैयार करने जैसा है
    • यह भी सुना गया कि WebAssembly network और file access को सीमित करने में मदद करता है, लेकिन यह स्पष्ट नहीं कि यह केवल सैद्धांतिक बात है या वास्तव में लागू भी है
  • JavaScript में linear algebra के लिए "production"-ready ecosystem मौजूद है या नहीं, इस पर सवाल

    • कहा गया कि खोजने पर अक्सर पुराने libraries के JavaScript ports मिलते हैं, लेकिन यह जिज्ञासा है कि कहीं कुछ महत्वपूर्ण छूट तो नहीं रहा
  • 1981/82 में लिखे गए Fortran 78 code को अगर संभालकर रखा होता, तो आज उसे चलाकर देखने की इच्छा जताई गई

    • उस समय Fortran का उपयोग करना मजबूरी था, और Jovial programming language source code formatter का भी ज़िक्र किया गया
  • LFortran का ज़्यादा उल्लेख न होना अजीब बताया गया

    • कहा गया कि LFortran ऑनलाइन शानदार और हैरान कर देने वाले WASM examples देता है
  • .NET और Java में Fortran के उपयोग के बारे में जानकारी दी गई

    • संबंधित links के माध्यम से यह दिखाया गया कि Fortran का उपयोग .NET और Java में किया जा सकता है
  • TensorFlow को browser के लिए compile करने का अनुभव साझा किया गया

    • इस बात के लिए राहत जताई गई कि TensorFlow, Eigen का उपयोग करता था, इसलिए Fortran में लिखी लोकप्रिय math libraries (BLAS, Lapack) पर निर्भरता नहीं थी और काफ़ी अतिरिक्त काम से बचाव हो गया