சென்ற பகுதியில், வடிவியல்; செயலிகளின் கட்டமைப்புக் குறிக்கோள்கள், மற்றும் கட்டமைப்பு பற்றி விவரமாக அலசினோம். இப்பகுதியில் வடிவியல் செயலிகளின் மென்பொருள் நிரலமைப்பு பற்றி அலசுவோம்.
மென்பொருள் நிரலமைப்பு (software programming model)
ஆரம்பத்தில், வடிவியல் செயலிகளை பயன்படுத்தும் நிரல்கள் நல்ல பயிற்சியுடைய நிரலர்களுக்கே மிகவும் கடினமான ஒரு செயலாக இருந்தது. அதுவும், எதைச் செய்வதானாலும், உச்சிகள், இழையமைப்பு, படத்துண்டுகள் என்று பிரச்னையையே மறக்கவல்ல ஒரு மென்பொருள் பயங்கரவாத செயலாக இருந்தது, இச்செயலிகளை நிரலுவது (programming?). வழக்கமான கணினி விஞ்ஞானம் பயின்ற நிரலர்களுக்கு அப்பாற்பட்ட ஒரு விஷயமாகவே இருந்தது. இந்நிலையில் (2000 –வாக்கில்) பல பல்கலைக்கழகங்கள் எப்படியாவது இந்த நிரலமைப்பை எளிமை படுத்த வேண்டும் என்று பல முயற்சிகளை மேற்கொண்டன.
இதை ஒரு ஓடை போல (stream) பாவித்தல் அவசியம் என்று முடிவெடுக்கப் பட்டது. ஓடையில் சேரும் பல்வேறு சிறு நீரமைப்புகள் போல, பல்வேறு தரவுகள் மற்றும் அடிப்படை அமைப்புகள் (ஓடையில், தண்ணீர், கற்கள், மணல் பெரிய ஆறுடன் சேறுவதைப் போல) சேர்த்து விட்டால், ஓடை மற்றவற்றை பார்த்துக் கொள்ளும். அதாவது, கடல் வரை அந்த நீர், கற்கள், மணலை கொண்டு சேர்க்க வேண்டியது நதியின் பொறுப்பு. இவ்வகை சிந்தனையின் வெற்றி, nVidia –வின் CUDA மற்றும் AMD –யின் CAL போன்ற நிரலமைப்பு என்ற இன்றைய மென்பொருள் புரட்சி.
’கூடா’ -வில் பல்லாயிரம் மென்திரிகளைக் கையாளுதல், மற்றும் தரவு இணையாளல் யாவும் சாத்தியம். விஞ்ஞான கணினி பயன்பாடுகளுக்குத் தேவையான சில செயல்பாடுகள் முதலில் புரிதல் அவசியம்:
- தரவுகளை, கணினி மெமரியில் சிதறல் மற்றும் திரட்டுதல் (scatter and gather) என்பது அவசியம்
- அப்படி சிதறடிக்கப்பட்ட தரவுகளை ஒரு செயல்பாடு (function) கொண்டு, சிதறப்பட்ட பல்லாயிரம் தரவுகளை இணையாளல் மூலம் கையாள்வது
- மேற்கூறிய இரண்டாம் கட்டத்தில் வெளிவரும் தரவுகளை ஒரு பயனுக்காக திரட்டுவது
- இப்படி உருவாகும் வரிசைகளை (arrays) இணையாளல் மூலம் கையாண்டு கணித்தல்
மேல் சொன்ன விளக்கங்கள் சற்று டெக்னிகலாக இருந்தால் கவலை வேண்டாம். ஒன்று அவசியம் புரிந்திருக்கும் – வடிவியல் விஷயங்களிலிருந்து விஞ்ஞான கணித்தலுக்கு, களம் மாறிவிட்டதை கவனித்திருக்கலாம். இதைத்தான் விஞ்ஞானிகள் தங்களுடைய ராட்சச கணினிகளில் செய்து வந்தார்கள். அப்படித்தான் பல்வேறு விஞ்ஞான பாவனைகள் (scientific simulations) நடக்கின்றன.
இப்படிப்பட்ட விஷயங்கள் இன்று விடியோ விளையாட்டுகளிலும் பிரபலம். உதாரணத்திற்கு, Second Son என்ற சோனி ப்ளேஸ்டேஷன் விளையாட்டில், எப்படி ஒளி சிதறல், மற்றும் துப்பாக்கி வெடி வெளிச்சங்கள் மிகவும் உண்மையாக காட்சியளிக்கின்றன என்று இந்த வீடியோவில் தெரியவரும்:
இதன் பின்னால், Havok என்ற பெளதிக எஞ்சின் வேலை செய்கிறது. ஒவ்வொரு தீப்பொறியும், வெடி நடந்த மையத்திலிருந்து பெளதிக விதிகளின்படி பயணிக்கின்றன. பல்வேறு டிவி திரைகளில் ஒரே நேரத்தில் எப்படி காட்சிகள் மாறுகின்றன என்று கவனியுங்கள்.
மேலே உள்ள வீடியோவில் உள்ள தொழில்நுட்பம் இன்று nVidia மற்றும் AMD வடிவியல் செயலிகளுடன் வேலை செய்கிறது. இதே தொழில்நுட்பம், மற்ற விஞ்ஞான பிரச்னைகளுக்கும் பயன்படுத்தப்பட்டுள்ளது.
கூட்டணு இயக்கவியல் துறையில் இத்தகைய தொழில்நுட்பத்தை பயன்படுத்தி பல்வேறு கூட்டணு பாவனைகள் மிகச் சிறப்பாக நடக்கின்றன. மேலும் இதைப்பற்றி அறிய: http://www.ks.uiuc.edu/Research/namd/
இன்று விஞ்ஞான உலகில், முன் பகுதியில் சொன்னது போல, பல்வேறு முயற்சிகள் இத்தகைய வடிவியல் செயலிகளைக் கொண்டு பல பிரச்னைகளைத் தீர்க்க முயன்று வருகின்றனர் விஞ்ஞானிகள். இன்று, கணினி விஞ்ஞானம் படித்த பல நிரலர்கள் எளிதாக, இவ்வகை செயலிகளால் நிரல்களை அமைத்து, விஞ்ஞானிகளுக்கு உதவுகிறார்கள்.
இன்னும் ஆரகிள், மற்றும் விஷுவல் பேசிக் அளவிற்கு ஊரெல்லாம் சொல்லிக் கொடுக்கப்படுவதில்லை. ஆனால், இவ்வகை முயற்சிகள் சற்றும் எதிர்பார்க்காத பல பயன்பாடுகளை இன்று சாத்தியமாக்கி வருகிறது. இன்று, (2014) உலகின் 500 மிக வேகமான கணினிகளின் பட்டியல், இதோ: http://www.top500.org/lists/2014/06/
இதில் எத்தனை வடிவியல் செயலிகள் என்று நீங்களே கணித்துக் கொள்ளுங்கள்! இதைவிட முக்கியமாக, உலகின் சூப்பர் கணினிகளில், அதிக சக்தியை உறிஞ்சாத கணினிகளின் பட்டியல் இங்கே: http://www.green500.org/
வடிவியல் செயலிகள் இங்கும் பட்டியலின் மேலே காட்சியளிக்கின்றன.
கணினி இணையாளலின் எதிர்காலம்
சொன்னாலும் தவறு, சொல்லாவிட்டாலும் தவறு என்பது தொழில்நுட்ப எதிர்கால ஜோசியம்.
- இன்றுள்ள பெரிய பிரச்னை, பொது செயலிகளுக்கும், வடிவியல் செயலிகளுக்கும் நடக்கும் அவசரத் தொடர்பு. இதில் அவசரம் போதவில்லை, அதாவது வேகம் போதவில்லை. இந்த வேக அதிகரிப்புக்கு பல்வேறு முயற்சிகள் செய்த வண்ணம் இருக்கிறார்கள் விஞ்ஞானிகள்.
- அடுத்தபடியாக, ஏன் பொது மற்றும் வடிவியல் செயலிகளை ஒரே சில்லில் அடக்க முடியாது என்று முயன்று வருகின்றனர்.
- மேலும் வடிவமைப்பு குழாயின் பல்வேறு பகுதிகளை தேவைக்கேற்றவாறு மாற்றிப் பயன் படுத்தும் தொழில்நுட்பம் வந்துவிட்டது. ஆனால், வடிவமைப்பு குழாயையே வேண்டியவாறு மாற்றியமைக்கும் முயற்சியில் இறங்கியுள்ளனர் விஞ்ஞானிகள். இதில் ஏராளமான சிக்கல்கள் உள்ளன
- எதிர்காலத்தில், இத்தகைய தொழில்நுட்பம் சாதாரண கணினி விஞ்ஞான பாட திட்டத்தில் சேர்க்கப்படும் என்று நம்ப வாய்ப்புள்ளது.
வழக்கம் போல, எல்லா தொழில்நுட்பங்களைப் போல, இந்த துறைக்கும் சில குறைகள் மற்றும் மிகைகள் உள்ளன. உதாரணத்திற்கு, எல்லா விஞ்ஞான பிரச்னைகளையும் இந்தத் தொழில்நுட்பம் கொண்டு தீர்க்க முடியாது. பல விஞ்ஞான பிரச்னைகள் பின்நோக்கி முடிவெடுக்கும் தேவை கொண்டவை. உதாரணத்திற்கு, புள்ளியியல் (statistics) பிரச்னைகளுக்கு இதுவரை இத்தகைய தொழில்நுட்பம் அதிகம் பயனளிப்பதாகத் தெரியவில்லை. இத்தகைய வடிவியல் செயலிகள் மிகவும் மலிவாகிவிட்டதால், பல நிறுவனங்களும் தங்களுடைய பிரச்னைகளை துரிதமாக தீர்க்க முடியுமா என்று பல்வேறு முயற்சிகளில் ஈடுபட்டுள்ளன. இத்தகைய முயற்சிகளில், சில முயற்சிகள் வெற்றி பெற நல்ல வாய்ப்பு இருக்கிறது, மேற்குலகின் பெரிய பல்கலைக்கழக ஆராய்ச்சியாளர்களை nVidia பல ஊக்குவிக்கும் திட்ட்டங்களுடன் இத்துறையை முன்னேற்ற முயற்சி செய்து வருகிறது. இன்னும் 5 வருடங்களில், இந்தத் துறையில் புதிய சில பயன்பாடுகள் வர நல்ல வாய்ப்பு உள்ளது.
பின்குறிப்பு
தமிழ்ச் சொற்கள் எல்லோருக்கும் புரிய வேண்டும் என்று சில ஆங்கிலச் சொற்களை கட்டுரையில் பயன்படுத்தியுள்ளேன். இச்சொற்களுக்கு நிகரான சில தமிழ்ச் சொற்களை இங்கு பரிசீலனைக்கென முன்வைக்கிறேன்
ஆங்கிலச்சொல் | தமிழ்ப்பரிந்துரை |
Function | செயல்பாடு |
Scatter and gather | சிதறல் மற்றும் திரட்டுதல் |
Scientific simulations | விஞ்ஞான பாவனைகள் |
Statistics | புள்ளியியல் |
மேற்கோள்கள்
இக்கட்டுரையை எழுத பல்வேறு தொழில் மற்றும் விஞ்ஞான வெளியீடுகள், மற்றும் யூடியூப் வீடியோக்கள் பயனளித்தன. வளரும் இத்துறையில், அவ்வளவு எளிதாக விஷயங்கள் பரவலாக கிடப்பதில்லை. இதனால், சில ஆராய்ச்சி வெளியீடுகளையும் இங்கே மேற்கோள்களாக காட்டியுள்ளேன்.
மேல்வாரியான வடிவியல் செயலிகள் பற்றிய அறிமுகம்:
- http://www.nvidia.ca/object/what-is-gpu-computing.html
- http://www.mathworks.com/discovery/matlab-gpu.html
- http://boinc.berkeley.edu/wiki/GPU_computing
- https://www.youtube.com/watch?v=YEflqFvirGI
- https://www.youtube.com/watch?v=kIyCq6awClM
- https://www.youtube.com/watch?v=nRSxp5ZKwhQ
- https://www.youtube.com/watch?v=3OX_tqGGgfQ
- https://www.youtube.com/watch?v=hfULQiCXdlQ
- http://www.ncbi.nlm.nih.gov/pmc/articles/PMC3496509/
- http://www.deskeng.com/de/gpu-vs-cpu-computing/
சற்று ஆழமான கட்டுரைகள்
- http://med.stanford.edu/pratxlab/PDF/GPU_Review.pdf
- http://www.ks.uiuc.edu/Research/gpu/
- http://www.capsl.udel.edu/~orozco/gpu-2011/index_files/files/current-research-gpu.pdf
- http://babrodtk.at.ifi.uio.no/files/publications/brodtkorb_etal_meta10.pdf
- http://cs.utsa.edu/~qitian/seminar/Spring11/03_04_11/GPU.pdf
- http://www.davidglasco.com/Papers/ieee-micro.pdf
- http://www.greatlakesconsortium.org/events/GPUMulticore/kirk.pdf
- http://www.ncsa.illinois.edu/news/story/gpus_path_into_the_future
- http://www.hpcwire.com/2011/06/09/top_10_objections_to_gpu_computing_reconsidered/
- http://stackoverflow.com/questions/1126989/what-future-does-the-gpu-have-in-computing
- http://www.scientific-computing.com/hpcforscience/feature-gpu.html
வடிவியல் செயலிகளின் கட்டமைப்பு கட்டுரைகள்
- ftp://download.nvidia.com/developer/cuda/seminar/TDCI_Arch.pdf
- http://s09.idav.ucdavis.edu/talks/02_kayvonf_gpuArchTalk09.pdf
- http://haifux.org/lectures/267/Introduction-to-GPUs.pdf
- http://sbel.wisc.edu/Courses/ME964/Literature/whitePaperFermiGlaskowsky.pdf
- http://developer.amd.com/wordpress/media/2012/10/GPU_Architecture_final.pdf