வீடியோ விளையாட்டுகளும் கணினி இணையாளலும் – 2

1980 –களில், புதிய தனிநபர் கணினிகள் (personal computers) வரத் தொடங்கின. இன்றைய மடி மற்றும் மேஜைக் கணினிகளோடு ஒப்பிட்டால், மிகவும் சக்தியற்றவை இவை. ஆனால், முன்பு பல லட்சம் டாலர்கள் விலையாக இருந்த கணினிகளோடு ஒப்பிட்டால், சில ஆயிரம் டாலர்களுக்கே விற்ற இந்த தனிநபர் கணினிகள், கணினிப் பொறியாளார்களின் கற்பனைகளைச் சிறகடிக்கச் செய்தன. ஆனால், இவற்றைப் பயன்படுத்தி, விஞ்ஞானப் பிரச்னை எதையும் தீர்க்க வழியில்லாமல் தவித்தார்கள். பெரிய விஞ்ஞானக் கணக்கிடல்களுக்காகத் தயாரிக்கப்பட்ட கணினிகள், இந்தக் குறையைப் பயன்படுத்திக் கொண்டு, பல புதிய உத்திகளைக் கொண்டு தங்களது தயாரிப்புகளை மேம்படுத்தத் தொடங்கினர்.

1980 – 1989 – முதல் கட்ட முயற்சிகள்

SIMD_Instruction_Data_Pool_Graph_Processing_unit_CPU_Flowஇதில் முதன்மையான அணுகுமுறை, data parallel computing எனப்படுகிறது. அதாவது, பல செயலிகளும், ஒரே நேரத்தில், பல தரவுகளை (data) கையாளும். (ஒரே ஆணை கொண்டு) முறையாகும் இது. கணிதக் கணக்கிடல்களுக்கு, இது மிகவும் தோதானது. குறிப்பாக, வரிசைகளைக் (arrays) கையாள, இது மிகவும் உபயோகமான விஷயம். Cray என்ற சூப்பர் கணினி இவற்றுக்கு பெயர் பெற்று விளங்கியது. பல கோடி டாலர்களுக்கு, இவற்றை பெரிய அரசாங்க ஆய்வுக்கூடங்கள், மற்றும் பெரிய பல்கலைக் கழகங்களால் மட்டுமே வாங்க முடிந்தது. இந்த அணுகுமுறையை, கணினி விஞ்ஞானிகள், SIMD – Single Instruction Multiple Data என்று அழைக்கிறார்கள்.

இந்தக் காலகட்டத்தில், இதுவே விஞ்ஞான கணினியின் எதிர்காலம் என்று நம்பிய பொறியாளார்கள், புதிய இணையாளல் கட்டமைப்பு (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). சில இடங்களில், பிரிடிஷ், மற்ற இடங்களில் ஆஸ்த்ரேலியா என்று அனைவரும் தந்திரத்தை புரிந்து செயலாற்றினர்.

Problem_Instructions_Processor_Flow_Machine_Language_8086_Endian_68030_Intel_Chips_Assembly

Windows_95_logoஇதே காலகட்டத்தில், விண்டோஸ் 95 அறிமுகப்படுத்தப்பட்டது. மைக்ரோசாஃப்ட் (Microsoft) புண்ணியத்தில், விண்டோஸில் இரு பரிமாண விளையாட்டுக்கள் வெளிவரத் தொடங்கின. ஆரம்பத்தில், இது ஒரு விண்டோஸ் வேகப்படுத்தும் உத்தியாக இருந்தது. நாளடைவில், சில தனிப்பட்ட கணினிகள், இதற்காக ஒரு தனிச் செயலியை அறிமுகப் படுத்தத் தொடங்கின. ஏன், முப்பரிமாண வடிவியல், (3d graphics) தனிநபர் கணினிகளில் சாத்தியமில்லை என்ற சர்ச்சை தொடங்கியது. இக்காலகட்டத்தில், சன் போன்ற கம்பெனிகள், இரு/முப்பரிமாண வடிவியல் கணினிகளை பொறியாளர்களுக்கு (Sun workstations) விற்கத் தொடங்கியது. இவை பெரும்பாலும், பொறியாளர்கள் தங்கள் வடிவமைப்பு வரைபடங்களுக்காக (engineering design, drafting) பயன்படுத்தத் தொடங்கினர்.

Sony_PS_Playstation_3d_1995அத்துடன், சோனியின் ப்ளேஸ்டேஷன் (Sony Playstation) , மற்றும் நிண்டெண்டோ (Nintendo consoles) போன்ற விளையாட்டு எந்திரங்கள், முப்பரிமாண வடிவியல் விளையாட்டுக்களை, அறிமுகப்படுத்தினர். ஆரம்ப கட்ட தனிநபர் கணினிகளின் முப்பரிமாண வடிவியல் செயலிகள் படுதோல்வியை சந்தித்தன. மைக்ரோசாஃப்ட் விடாமல் தன்னுடைய DirectX என்ற வடிவியல் கையாளும் மென்பொருளை முன்னேற்றிக் கொண்டே வந்தது. முக்கியமாக, வெளிச்ச கையாளுதல், மற்றும் படமூலத்தை கையாளும் திறனை ( T&L – Transform and Lighting) தன்னுடைய 7 –வது வெளீயீட்டில் கொண்டு வந்தது. இந்த பத்தாண்டின் இறுதியில், உருப்படியான முதல் வடிவியல் செயலி, தனிநபர் கணினிகளுடன் இணைந்தது.

கொஞ்சம் நிறுத்தி, இந்த வடிவியல் செயலிகளின் வடிவமைப்புக் கொள்கைகளை (design principles) சற்று ஆராய்வோம்.

  1. பல கோடி பட மூலங்களை (pixels) நொடிக்குள் கையாள வேண்டும்
  2. மேலே சொன்ன கையாளுதல், ஒன்றன் பின் ஒன்றாக நேர்ந்தால், குழந்தைகள் -டிவி யில் கிரிகெட் பார்க்கப் போய்விடுவார்கள். திரையின் பகுதிகளுக்கேற்ப, பல ஒப்பிணைவு (parallel) கையாளல், அல்லது இணையாளல் அவசியத் தேவை. அப்பொழுதுதான், மாறும் காட்சிகள் கண்களுக்கு ஒரு தொடர்ச்சியாகக் காட்சியளிக்கும்
  3. கோடுகளை வரைவது என்பது அடிப்படை கணினி வடிவியல் தேவை. பலகோண வரைதல் (drawing polygons) என்பது வடிவியல் செயலிகளின் திறனை அளக்கும் ஒரு உத்தி. பொதுவாக, வடிவியல் செயலிகள், பல லட்சம், பலகோணங்களை ஒரு நொடியில் வரையும் திறம் கொண்டவை
  4. பெண்டியம் போன்ற பொது செயலிகளில், 4 அல்லது 8 மைய செயல்தளங்கள் இருக்கிறது (multi-core CPUs). ஆனால், வடிவியல் செயலிகளில், பல நூறு மைய தளங்கள் உண்டு. இதனால், ஒரே சமயத்தில் பல நூறு ஆணைகள் இயங்கிய வண்ணம் இருக்கும். இவற்றை திரிகள் (threads) என்று கணினி விஞ்ஞானிகள் அழைக்கிறார்கள்

இத்தகைய விஷயங்களை வடிவியல் செயலிகளிடம் விட்டு விட்டால், பொது செயலிகளான பெண்டியம் போன்ற செயலிகள், தங்களின் வடிவமைக்கப்பட்ட வேலைகளைச் செய்யும். இதில் பெரிய சவால், எச்செயல் எந்த செயலியிடம் வழங்க வேண்டும் என்று முடிவெடுப்பது. இது, இங்கே எழுதுவதைப் போல அவ்வளவு எளிதல்ல. வேண்டுமானால், திருக்குறளை சற்று மாற்றி இப்படிச் சொல்லலாம்:

எத்தரவு எவ்வகை என்றாய்ந்து அத்தரவு
அச்செயலியிடம் விடல், இணையாளல்

2000 – இன்றுவரை

பொதுச் செயலிகளில், ஏராளமான உதிரி பாகங்கள் அடைக்கப்பட்டு வெளிவந்தாலும், அவற்றின் செயல்திறனில் உதிரி பாகங்கள் அடைப்பிற்கு ஏற்றவாறு முன்னேற்றமில்லை. அத்துடன், இவற்றின் அளவும் பெரிதாகிக் கொண்டே வந்தது. இவற்றின் குளிர்விக்கப்படும் தேவைகளும் அதிகரித்தது. இந்த நிலையில், பொது செயலிகளில், மேலும் வடிவியல் தேவைகளை திணிப்பது அர்த்தமற்றதாக பொறியாளர்களும் எண்ணத் தொடங்கினார்கள். பொது செயலிகளின் சேவை, இயக்க நிரல்களின் (operating systems) அதிகரித்து வரும் தேவைகளை பூர்த்தி செய்யவே சரியாக இருந்தது.

NVIDIA_CUDA2000 –ஆம் ஆண்டுக்குப் பிறகு, ஏராளமான வன்பொருள் முன்னேற்றங்கள் (hardware advances) இந்த வடிவியல் செயலிகளில் வரத் தொடங்கின. ஆனால், இவை எல்லாவற்றையும் விட முக்கியமானது 2004-ல் நடந்த ஒரு மென்பொருள் முன்னேற்றம். nVidia என்ற அமெரிக்க வடிவியல் செயலி தயாரிப்பாளர், CUDA என்ற நிரல் எழுதும் ஒரு கணினி மொழி/முறையை அறிவித்தது. இத்துறையை மாற்றியமைத்த ஒரு மிகப் பெரிய முன்னேற்றம் இது என்று சொல்லலாம். அதுவரை, மைக்ரோசாஃப்டை எதிர்பார்த்து இருந்த இந்தத் துறை, திடீரென்று விடுதலைப் பெற்றது. அத்துடன், மைக்ரோசாஃப்டின் விண்டோஸ் இயக்க நிரலை (operating system) சார்ந்தே காலத்தைத் தள்ள வேண்டியிருந்தது. மைக்ரோசாஃப்டிற்கு பல்லாயிரம் தேவைகளை பூர்த்தி செய்ய வேண்டிய கட்டாயத்தில், வடிவியல் முக்கியமாக இருந்தாலும், ஏதாவது ஒரு எக்ஸெல் பிரச்னை, அதைவிட முக்கியம். இத்துறையின் தேவைக்காக மைக்ரோசாஃப்ட் ஒன்றும் இருக்கிற வேலையெல்லாம் விட்டு விட்டு வடிவியல் தேவைகளைப் பூர்த்தி செய்யப் போவதில்லை.

அப்படி என்ன விசேஷம் இந்த CUDA –வில்? முதலில், எல்லோருக்கும் (கணினி நிரலர்கள்) தெரிந்த C கணினிமொழியை அடிப்படையாகக் கொண்டது. அத்துடன், பல இயக்க நிரலிலும் பயன்படுத்தத் தகுந்த மொழி. சில புதிய ஆணைகளைக் கற்றாலே போதும். அழகாக வடிவியல் நிரலிகளை உபயோகிக்கலாம். அத்துடன் nVidia பல்வேறு உதாரணங்கள், மற்றும் வசதிகளை நிரலர்களுக்கு தாராளமாக வழங்கியது. வெகு மலிவான வடிவியல் செயலி, மிக அதிக கணினிகளில் பயன்படுத்தக் கூடிய மொழி/கருவிகள் என்றால் விஞ்ஞானிகளுக்கு என்ன கசக்குமா?

அடுத்த 10 ஆண்டுகளில் எல்லா வடிவியல் செயலி தயாரிப்பாளர்களும் CUDA உடன் சேருவதை கூடா ஒழுக்கமாக என்னவில்லை! இன்று, CUDA –வில் நிரல்களை பல்வேறு மலிவு லினிக்ஸ் கணினிகளில், பல வகை விஞ்ஞான பிரச்னைகளைத் தீர்க்க விஞ்ஞானிகள், புது அணுகுமுறைகளை உருவாக்கிய வண்ணம் இருக்கிறார்கள். எங்கோ இருக்கும் ராட்சச கணினியை எதிர்பார்க்காமல், தங்களுடைய அலுவலகத்தில் இருக்கும் கணினியிலேயே அதிவேக பிரச்னை தீர்க்கும் இந்த கூடா பழக்கத்தையும் சேர்த்துக் கொண்டுவிட்டார்கள்! CUDA –வில் இன்னொரு முக்கியமான விஷயம். சில விஞ்ஞான பிரச்னைகளுக்கு வடிவியல் செயலிகளின் சக்தி தேவை. ஆனால், அவற்றின் வடிவியல் உபாதைகள் தேவையில்லை. CUDA இப்படிப்பட்ட வடிவியலுக்கு சம்மந்தமே இல்லாத ஆனால், செயலிகளின் இணையாளல் (parallel computing power) சக்தியை எளிதாக பயன்படுத்த உதவியாக இருந்தது. அத்துடன் எதை எங்கு கையாள வேண்டும் என்பதை CUDA வின் தொகுப்பி (compiler) பார்த்துக் கொள்கிறது. ஒன்றன் பின் ஒன்றாக கையாளப்பட வேண்டிய ஆணைகள் பொதுச் செயலிக்கும், இணையாளல் தேவைகள் வடிவியல் செயலிக்கும் அனுப்பப்படுகிறது. நிரலர்கள் இதைப் பற்றி கவலைப் படத் தேவையில்லை.

Server_Rack_NAS_SAN_Files_Cloud

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 நிரல் மொழிகள்

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.