Кіріспе

Кэш өлшеміне қарамастан тиімді I/O алгоритмі. Есептеулерде кэшке бейімделген алгоритм (немесе кэштен тәуелсіз алгоритм) – процессор кэшінің мүмкіндіктерін пайдаланатын, бірақ кэш өлшемі (немесе кэш жолдарының ұзындығы және т.б.) нақты параметр ретінде берілмейтін алгоритм. Оптималды кэшке бейімделген алгоритм – кэшті оптималды түрде пайдаланатын (асимптотикалық жағынан, тұрақты шамаларды ескермейтін) кэшке бейімделген алгоритм. Осылайша, кэшке бейімделген алгоритм әртүрлі кэш өлшемдері бар бірнеше машинада немесе әртүрлі деңгейдегі, әртүрлі өлшемдегі кэштері бар жад иерархиясында өзгеріссіз жақсы жұмыс істеуге арналған. Кэшке бейімделген алгоритмдер нақты циклдық плиткалаумен салыстырылады, ол берілген кэш үшін оптималды өлшемдегі блоктарға проблеманы бөліп шығарады. Матрица көбейту, матрица транспозициясы, сұрыптау және басқа да бірнеше проблемалар үшін оптималды кэшке бейімделген алгоритмдер белгілі. Кейбір жалпы алгоритмдер, мысалы, Cooley-Tukey FFT, параметрлердің белгілі бір таңдауы бойынша кэшке бейімделген. Бұл алгоритмдер тек асимптотикалық жағынан ғана оптималды болғандықтан (тұрақты шамаларды ескермейтін), абсолюттік жағынан оптималды өнімділікке қол жеткізу үшін машинаға қатысты қосымша баптау қажет болуы мүмкін. Кэшке бейімделген алгоритмдердің мақсаты – осындай баптаудың қажетті көлемін азайту. Әдетте, кэшке бейімделген алгоритм рекурсивті «бөліп жеңу» алгоритмімен жұмыс істейді, онда проблема кішірек және кішірек кіші-мәселелерге бөлінеді. Соңында, кэш өлшеміне қарамастан, кэшке сыятын кіші-мәселенің өлшеміне жетеді. Мысалы, матрица көбейтудің оптималды кэшке бейімделген түрі, әрбір матрицаны төрт кіші-матрицаға рекурсивті бөліп, кіші-матрицаларды тереңдік бойынша көбейту арқылы қол жеткізіледі. Нақты машинаны баптау кезінде, төменгі деңгейде нақты кэш өлшемдеріне бағытталған циклдық плиткалауды қолданатын, бірақ әйтпесе кэшке бейімделген алгоритмді пайдаланатын гибридті алгоритм қолданылуы мүмкін.

Тарих

Кэшсіз алгоритмдер идеясы (және атауы) Чарльз Э. Лейзерсонның 1996 жылы пайда болған, ал алғаш рет 1999 жылы Массачусетс технология институтында Харальд Прокоп магистрлік диссертациясында жариялаған. Бұрынғы көптеген жұмыстар болған, олар көбінесе нақты проблемаларды талдаған; олар Фриго және т.б. 1999 ж. еңбектерінде егжей-тегжейлі талқыланған. Алғашқы мысалдардың ішінде Синглтонның 1969 жылғы рекурсивті Жылдам Фурье түрлендіруі, Аггарвал және т.б. 1987 жылғы ұқсас идеялары, Фригоның 1996 жылғы матрица көбейту және LU ыдырауы, сондай-ақ Тод Велдхуйзеннің 1996 жылғы Blitz++ кітапханасындағы матрицалық алгоритмдері бар.