1980 –களில், புதிய தனிநபர் கணினிகள் (personal computers) வரத் தொடங்கின. இன்றைய மடி மற்றும் மேஜைக் கணினிகளோடு ஒப்பிட்டால், மிகவும் சக்தியற்றவை இவை. ஆனால், முன்பு பல லட்சம் டாலர்கள் விலையாக இருந்த கணினிகளோடு ஒப்பிட்டால், சில ஆயிரம் டாலர்களுக்கே விற்ற இந்த தனிநபர் கணினிகள், கணினிப் பொறியாளார்களின் கற்பனைகளைச் சிறகடிக்கச் செய்தன. ஆனால், இவற்றைப் பயன்படுத்தி, விஞ்ஞானப் பிரச்னை எதையும் தீர்க்க வழியில்லாமல் தவித்தார்கள். பெரிய விஞ்ஞானக் கணக்கிடல்களுக்காகத் தயாரிக்கப்பட்ட கணினிகள், இந்தக் குறையைப் பயன்படுத்திக் கொண்டு, பல புதிய உத்திகளைக் கொண்டு தங்களது தயாரிப்புகளை மேம்படுத்தத் தொடங்கினர்.
1980 – 1989 – முதல் கட்ட முயற்சிகள்
இந்தக் காலகட்டத்தில், இதுவே விஞ்ஞான கணினியின் எதிர்காலம் என்று நம்பிய பொறியாளார்கள், புதிய இணையாளல் கட்டமைப்பு (computing parallel architectures) யோசனைகள், கணினி நெறிமுறைகள் (algorithms) மற்றும் கணினி நிரல் மொழிகள் (programming languages) என்று பலவற்றையும் உருவாக்கினார்கள்.
இதே காலகட்டம், கணினி வடிவியலின் (computer graphics) ஆரம்ப நாட்கள். முதலில் வந்த தனிநபர் கணினிகளில், பெரிதாக படம் வரையும் திறன் இல்லை. நேர்கோடுகள், சின்ன வளைவுகள் என்று அடிப்படை வடிவியலுக்கு மட்டுமே அன்றைய இண்டெல், மற்றும் கமடோர் கணினிகள் வழி வகுத்தன. இவை இரு பரிமாண வடிவியல் (2d graphics) தேவைகளை மட்டுமே பூர்த்தி செய்தது.
1990 -1999 இரண்டாம் கட்ட முயற்சிகள்
1990 –களில், பொது செய்லிகளின் விலை மிகவும் குறையத் தொடங்கியது. ஏராளமான விலை கொடுத்து, ராட்சச கணினிகளுக்கு பதில், ஏன் மலிவான பொது செயலிகளை வைத்து விஞ்ஞான பிரச்னைகளைத் தீர்க்கக் கூடாது? இதுவே, விரவல் கணினி செய்முறை (distributed computing) ஆனது. இந்த புதிய நோக்கின் ஆரம்ப நாட்களாதலால், பல சிக்கல்கள் முளைக்கத் தொடங்கின. இந்த அணுகுமுறை 1980 –களின் அணுகுமுறைக்கு எதிர்மாறானது. முதலில், பிரச்னைக்கான தரவுகள் (data) பல செயலிகளுக்கும் பரப்பப்பட்டன. ஒரே நிரலால் பல வலையமைக்கப்பட்ட (networked computing nodes) கணினி மையங்களில் உள்ள தரவுகளை கையாள முடிந்ததே இதன் வெற்றி. கணினி விஞ்ஞானிகள், இந்த அணுகுமுறையை, SPMD – Single Program Multiple Data, என்று அழைக்கிறார்கள். 1980 –களில், ஒரே ஆணை (instruction) பல தரவுகளை, ஒரே நேரத்தில் கையாண்டது. இத்தகைய அணுகுமுறை, பலதரப்பட்ட விஞ்ஞான பிரச்னைகளை குறைந்த செலவில் துல்லியமாக தீர்க்க முடிந்தது. கணினிகளின் செய்திப் பரிமாற்றம், இந்த முயற்சிக்கு மிகத் தேவையான ஒன்றாகியது. ஆனால், அதிகம் வளராத வலையமைப்புத் தொழில்நுட்பம், கழுத்தை அறுத்தது உண்மை. இதை ஒரு உதாரணம் கொண்டு புரிந்து கொள்ள முயற்சிக்கலாம். 1980 –ல் உள்ள முறை, இரண்டாம் உலகப் போரில் இத்தாலி போன்ற நாடுகள் பின்பற்றிய முறையைப் போன்றது – அதாவது, ”தாக்கு, நாட்டை பிடி” என்ற ஒரே ஆணையுடன், வட ஆப்பிரிக்க நாடுகளைத் தாக்கி, ஓரளவு வெற்றியும் கண்டனர். 1990-ல் உருவான முயற்சி, அமெரிக்காவின், முதல் வளைகுடா போருடன் ஒப்பிடலாம். அழகாகத் திட்டமிட்டு, பல நகரங்களில், தாக்குதல்கள் ஈராக்கில் அமெரிக்கா நடத்தியது. அதன் வெற்றிக்கு காரணம், பன்னாட்டுப் படைகளை ஒருங்கிணைக்கும் செய்தி தொடர்பு, மற்றும் தந்திரம் (strategy). சில இடங்களில், பிரிடிஷ், மற்ற இடங்களில் ஆஸ்த்ரேலியா என்று அனைவரும் தந்திரத்தை புரிந்து செயலாற்றினர்.
கொஞ்சம் நிறுத்தி, இந்த வடிவியல் செயலிகளின் வடிவமைப்புக் கொள்கைகளை (design principles) சற்று ஆராய்வோம்.
- பல கோடி பட மூலங்களை (pixels) நொடிக்குள் கையாள வேண்டும்
- மேலே சொன்ன கையாளுதல், ஒன்றன் பின் ஒன்றாக நேர்ந்தால், குழந்தைகள் -டிவி யில் கிரிகெட் பார்க்கப் போய்விடுவார்கள். திரையின் பகுதிகளுக்கேற்ப, பல ஒப்பிணைவு (parallel) கையாளல், அல்லது இணையாளல் அவசியத் தேவை. அப்பொழுதுதான், மாறும் காட்சிகள் கண்களுக்கு ஒரு தொடர்ச்சியாகக் காட்சியளிக்கும்
- கோடுகளை வரைவது என்பது அடிப்படை கணினி வடிவியல் தேவை. பலகோண வரைதல் (drawing polygons) என்பது வடிவியல் செயலிகளின் திறனை அளக்கும் ஒரு உத்தி. பொதுவாக, வடிவியல் செயலிகள், பல லட்சம், பலகோணங்களை ஒரு நொடியில் வரையும் திறம் கொண்டவை
- பெண்டியம் போன்ற பொது செயலிகளில், 4 அல்லது 8 மைய செயல்தளங்கள் இருக்கிறது (multi-core CPUs). ஆனால், வடிவியல் செயலிகளில், பல நூறு மைய தளங்கள் உண்டு. இதனால், ஒரே சமயத்தில் பல நூறு ஆணைகள் இயங்கிய வண்ணம் இருக்கும். இவற்றை திரிகள் (threads) என்று கணினி விஞ்ஞானிகள் அழைக்கிறார்கள்
இத்தகைய விஷயங்களை வடிவியல் செயலிகளிடம் விட்டு விட்டால், பொது செயலிகளான பெண்டியம் போன்ற செயலிகள், தங்களின் வடிவமைக்கப்பட்ட வேலைகளைச் செய்யும். இதில் பெரிய சவால், எச்செயல் எந்த செயலியிடம் வழங்க வேண்டும் என்று முடிவெடுப்பது. இது, இங்கே எழுதுவதைப் போல அவ்வளவு எளிதல்ல. வேண்டுமானால், திருக்குறளை சற்று மாற்றி இப்படிச் சொல்லலாம்:
எத்தரவு எவ்வகை என்றாய்ந்து அத்தரவு
அச்செயலியிடம் விடல், இணையாளல்
2000 – இன்றுவரை
பொதுச் செயலிகளில், ஏராளமான உதிரி பாகங்கள் அடைக்கப்பட்டு வெளிவந்தாலும், அவற்றின் செயல்திறனில் உதிரி பாகங்கள் அடைப்பிற்கு ஏற்றவாறு முன்னேற்றமில்லை. அத்துடன், இவற்றின் அளவும் பெரிதாகிக் கொண்டே வந்தது. இவற்றின் குளிர்விக்கப்படும் தேவைகளும் அதிகரித்தது. இந்த நிலையில், பொது செயலிகளில், மேலும் வடிவியல் தேவைகளை திணிப்பது அர்த்தமற்றதாக பொறியாளர்களும் எண்ணத் தொடங்கினார்கள். பொது செயலிகளின் சேவை, இயக்க நிரல்களின் (operating systems) அதிகரித்து வரும் தேவைகளை பூர்த்தி செய்யவே சரியாக இருந்தது.
அப்படி என்ன விசேஷம் இந்த CUDA –வில்? முதலில், எல்லோருக்கும் (கணினி நிரலர்கள்) தெரிந்த C கணினிமொழியை அடிப்படையாகக் கொண்டது. அத்துடன், பல இயக்க நிரலிலும் பயன்படுத்தத் தகுந்த மொழி. சில புதிய ஆணைகளைக் கற்றாலே போதும். அழகாக வடிவியல் நிரலிகளை உபயோகிக்கலாம். அத்துடன் nVidia பல்வேறு உதாரணங்கள், மற்றும் வசதிகளை நிரலர்களுக்கு தாராளமாக வழங்கியது. வெகு மலிவான வடிவியல் செயலி, மிக அதிக கணினிகளில் பயன்படுத்தக் கூடிய மொழி/கருவிகள் என்றால் விஞ்ஞானிகளுக்கு என்ன கசக்குமா?
அடுத்த 10 ஆண்டுகளில் எல்லா வடிவியல் செயலி தயாரிப்பாளர்களும் CUDA உடன் சேருவதை கூடா ஒழுக்கமாக என்னவில்லை! இன்று, CUDA –வில் நிரல்களை பல்வேறு மலிவு லினிக்ஸ் கணினிகளில், பல வகை விஞ்ஞான பிரச்னைகளைத் தீர்க்க விஞ்ஞானிகள், புது அணுகுமுறைகளை உருவாக்கிய வண்ணம் இருக்கிறார்கள். எங்கோ இருக்கும் ராட்சச கணினியை எதிர்பார்க்காமல், தங்களுடைய அலுவலகத்தில் இருக்கும் கணினியிலேயே அதிவேக பிரச்னை தீர்க்கும் இந்த கூடா பழக்கத்தையும் சேர்த்துக் கொண்டுவிட்டார்கள்! CUDA –வில் இன்னொரு முக்கியமான விஷயம். சில விஞ்ஞான பிரச்னைகளுக்கு வடிவியல் செயலிகளின் சக்தி தேவை. ஆனால், அவற்றின் வடிவியல் உபாதைகள் தேவையில்லை. CUDA இப்படிப்பட்ட வடிவியலுக்கு சம்மந்தமே இல்லாத ஆனால், செயலிகளின் இணையாளல் (parallel computing power) சக்தியை எளிதாக பயன்படுத்த உதவியாக இருந்தது. அத்துடன் எதை எங்கு கையாள வேண்டும் என்பதை CUDA வின் தொகுப்பி (compiler) பார்த்துக் கொள்கிறது. ஒன்றன் பின் ஒன்றாக கையாளப்பட வேண்டிய ஆணைகள் பொதுச் செயலிக்கும், இணையாளல் தேவைகள் வடிவியல் செயலிக்கும் அனுப்பப்படுகிறது. நிரலர்கள் இதைப் பற்றி கவலைப் படத் தேவையில்லை.
nVidia -வின் கூற்றுபடி, இதுவரை CUDA வில் இயங்கக்கூடிய 80 மில்லியன் செயலிகளை இதுவரை விற்றுத் தள்ளிவிட்டார்கள். இதில் பெரும்பாலும் வீடியோ விளையாட்டு உபயோகத்தில் இருந்தாலும், கணிசமான சில மில்லியன் செயலிகள் விஞ்ஞானிகளுக்கும் உதவி செய்து வருகிறது.
ATI என்ற இன்னொரு அமெரிக்க நிறுவனம் இத்துறையில் nVidia வுடன் கடும் போட்டி போடும் நிறுவனம். ATI –யும் இணையாளல் செயலிகளையும், வடிவியல் செயலிகளையும் பல்லாண்டுகளாக வடிவமைத்து வருகிறது. கணினியின் மற்ற எல்லாத் துறைகளைப் போல, இத்துறையிலும், யாருடைய வடிவமைப்பு உயர்ந்தது என்ற விடா சர்ச்சை இன்று வரைத் தொடர்கிறது. ATI, சில ஆண்டுகளுக்கு முன், இன்னொரு அமெரிக்க நிறுவனமான, AMD –யுடன் இணைந்தது.
CUDA –வை போல இன்னும் சில கணினி முறைகள் இன்று வளாரத் தொடங்கியுள்ளன. முக்கியமாக, OpenCL என்பது இன்னொரு முறை. வழக்கமாக, கணினி மென்பொருளாளர்கள், எது உயர்ந்தது, என்று விடாமல் அலசி வரும் இன்னொரு துறை, கணினி வடிவியல்!
உலகின் மிக சக்திவாய்ந்த கணினிகளில் ஒன்று சைனாவில் இன்று உள்ளது. அதில் பல நூறு வடிவியல் செயலிகள் ஒன்றாக வேலை செய்து பல சூப்பர் கணினிகளுக்கு சவால் விடுகிறது. சைனாவின் ராணுவ மற்றும் விஞ்ஞான ஆராய்ச்சிக்கு இது பெரும் உதவியாக இருக்கும் என்று நம்பப்படுகிறது.
அடுத்த பகுதியில், மேல்வாரியான அலசலிலிருந்து, சற்று ஆழமான புரிதலுக்கு முயற்சிப்போம்.
பின்குறிப்பு
தமிழ்ச் சொற்கள் எல்லோருக்கும் புரிய வேண்டும் என்று சில ஆங்கிலச் சொற்களை கட்டுரையில் பயன்படுத்தியுள்ளேன். இச்சொற்களுக்கு நிகரான சில தமிழ்ச் சொற்களை இங்கு பரிசீலனைக்கென முன்வைக்கிறேன்.
# ஆங்கிலச் சொல் தமிழ்ப் பரிந்துரை 1 Algorithms (computing) கணினி நெறிமுறைகள் 2 Array வரிசை 3 CPU core மைய செயல்தளங்கள் 4 Data தரவு 5 Distributed computing விரவல் கணினி செய்முறை 6 Networked computing nodes வலையமைக்கப்பட்ட கணினி மையங்கள் 7 Operating systems இயக்க நிரல்கள் 8 Parallel (computing) architecture இணையாளல் கட்டமைப்பு 9 Parallel processing இணையாளல் 10 Programming languages நிரல் மொழிகள்
