𝗪𝗲𝗯𝗚𝗣𝗨: നിങ്ങളുടെ ബ്രൗസറിൽ 𝟮𝟱𝟬,𝟬𝟬𝟬 പാർട്ടിക്കിളുകൾ
ഇത് 50-ാം ദിവസമാണ്. ഓരോ ദിവസവും പുതിയൊരു സാങ്കേതികവിദ്യ പൂജ്യത്തിൽ നിന്ന് നിർമ്മിക്കുന്ന എന്റെ പരമ്പരയിലെ അവസാന ദിവസമാണിത്. WebGPU-ലൂടെ ഇത് അവസാനിപ്പിക്കാൻ ഞാൻ ആഗ്രഹിച്ചു.
ഒരു ബ്രൗസറിനുള്ളിലെ GPU ഉപയോഗിച്ച് ഞാൻ 250,000 പാർട്ടിക്കിളുകളെ പൂർണ്ണമായും സിമുലേറ്റ് (simulate) ചെയ്തു.
നിങ്ങളുടെ CPU-വിന് കുറച്ച് വേഗതയേറിയ കോറുകൾ (cores) ഉണ്ട്. എന്നാൽ നിങ്ങളുടെ GPU-വിന് ആയിരക്കണക്കിന് ലളിതമായ കോറുകൾ ഉണ്ട്. ഒരു CPU പാർട്ടിക്കിളുകളെ ഓരോന്നായി നീക്കുന്നു. എന്നാൽ ഒരു GPU ആയിരക്കണക്കിന് പാർട്ടിക്കിളുകളെ ഒരേസമയം നീക്കുന്നു.
WebGL-ന്റെ ആധുനിക പിൻഗാമി ആണ് WebGPU. ഇത് കമ്പ്യൂട്ട് ഷേഡറുകൾ (compute shaders) വഴി നിങ്ങളുടെ ബ്രൗസറിന് ഹാർഡ്വെയറിലേക്ക് പ്രവേശനം നൽകുന്നു. ഗ്രാഫിക്സ് വരയ്ക്കാൻ മാത്രമല്ല, കണക്കുകൂട്ടലുകൾ (math) നടത്താനും ഈ ഷേഡറുകൾ GPU-വിനെ അനുവദിക്കുന്നു.
ഇത് എങ്ങനെ പ്രവർത്തിക്കുന്നു:
• GPU നിയന്ത്രിക്കുന്നതിനായി നിങ്ങൾ ഒരു ഡിവൈസ് (device) നിർമ്മിക്കുന്നു. • പൊസിഷൻ (position), വെലോസിറ്റി (velocity) തുടങ്ങിയ പാർട്ടിക്കിൾ ഡാറ്റ സൂക്ഷിക്കാൻ നിങ്ങൾ ഒരു ബഫർ (buffer) നിർമ്മിക്കുന്നു. • ഡാറ്റ ഒരിക്കൽ അപ്ലോഡ് ചെയ്താൽ അത് GPU-വിൽ തന്നെ സൂക്ഷിക്കുന്നു. • ഒരു പാർട്ടിക്കിളിനായി നിങ്ങൾ ഒരു കമ്പ്യൂട്ട് ഷേഡർ എഴുതുന്നു. • GPU ആ ഷേഡർ ഒരേസമയം എല്ലാ 250,000 പാർട്ടിക്കിളുകളിലും പ്രവർത്തിപ്പിക്കുന്നു.
ഡാറ്റ GPU-വിൽ തന്നെ തുടരുന്നു. ഇത് CPU-ലേക്ക് തിരികെ വരാതെ തന്നെ കമ്പ്യൂട്ട് ഘട്ടത്തിൽ നിന്ന് റെൻഡർ (render) ഘട്ടത്തിലേക്ക് മാറുന്നു. ഈ വേഗത സിമുലേഷൻ 60fps വേഗതയിൽ പ്രവർത്തിക്കാൻ സഹായിക്കുന്നു.
ബ്രൗസറിനുള്ളിലെ കണക്കുകൂട്ടലുകൾക്കും ലോക്കൽ മെഷീൻ ലേണിംഗിനും (machine learning) പുതിയ അടിത്തറയാണ് WebGPU. ഈ പരമ്പര അവസാനിപ്പിക്കാൻ ഏറ്റവും അനുയോജ്യമായ മാർഗ്ഗമായിരുന്നു ഇത്.
ഈ യാത്രയിൽ കൂടെയുണ്ടായതിന് നന്ദി. എല്ലാ പ്രോജക്റ്റുകളുടെയും പൂർണ്ണമായ ശേഖരം നിങ്ങൾക്ക് ഇവിടെ കാണാം.
Full code: https://github.com/dev48v/webgpu-from-zero
Complete post: https://dev.to/dev48v/webgpu-i-simulated-250000-particles-entirely-on-the-gpu-in-the-browser-2o0f
Optional learning community: https://dev48v.infy.uk/techfromzero.php