Berkeley CSUA MOTD:Entry 49874
Berkeley CSUA MOTD
2021/10/17 [General] UID:1000 Activity:popular

2008/5/2-8 [Computer/SW/Compilers] UID:49874 Activity:low
5/2     How do I get the L1/L2 cache size and cache line size on my machine?
        Can I find this stuff out at compile time somehow?
        \_ You aren't planning on running your code on any other processors?
        \_ May I ask what it is you want to achieve ultimately? If you don't
           know your architecture and want to find out dynamically, there are
           tools that can peek/poke to give you definitive answers, plus you get
           to see the latency of L1/L2/memory and infer a lot of info like
           cache associativity. Prof Saavedra has done a lot of cache benchmarks
           and micro measurements.                              -kchang
           tools that can peek/poke to give you definitive answers, plus you
           get to see the latency of L1/L2/memory and infer a lot of info like
           cache associativity. Prof Saavedra has done a lot of cache
           benchmarks and micro measurements.                           -kchang
        \_ No, there isn't a simple way, compile time or not. Your common
           user oriented desktop compiler today doesn't know anything
           about L1/L2 besides knowing how to do proper register allocation
           and in most cases don't even do a good job of spilling, knowing
           about cache effects, etc. Now, there is a lot of research in
           the past 20 years where compilers for specialized applications
           will optimize vector computing, tight loops, unrolling based
           on known monotonicity of variables, specialization, and allocate
           memory access patterns all based on memory locality (L1/L2),
           but you're not going to get that type of optimization from
           gcc or M$ compiler.
           the past 20 years where compilers will optimize vector computing
           and allocate memory access patterns based on L1/L2, but you're
           not going to get that from gcc or M$ compiler.
           \_ That's unfortunate.  Is there some program I can run to find
              out?  /proc/cpuinfo tells me, "cache size : 4096 KB", but doesn't
              give L1, or line size.  Is that just the data cache?
              (This is an Intel Core2 )
        \_ What the hell does "at compile time" mean?
           \_ I mean, perhaps there is some built in constant I can use
              that gives the L2 cache size of the machine you're compiling on.
              \_ You mean for a POSIX C++ compiler?  Also do you not expect
                 your code to be run on any other machine?
                 \_ Nope, this is purely an optimization test for 1 machine.
                    I guess if there's a way to find out the sizes dynamically
                    that's ok too.
                    \_ What I'm saying is that "compile time" doesn't mean
                       shit.  Compile time + what language/compiler you are
                       using might mean something.
                       \_ Language: C, C++, or Fortran.  Not picky
                          Compiler: gnu, intel, or portland.  Not picky.
                          OS: Linux.
                    \_ If it's just for one machine, why don't you just look
                       up the specs at Intel or AMD's website?
                       \_ I think I'd have to know more about the CPU than I
                          do.  Also, it would be nice to be able to recompile
                          it on other machines for comparison.
                          \_ Then you probably want to look into a CPUID
                             utilities (or roll your own simple version if
                             you just want simple cache info), along with
                             preprocessing of some sort. However, cache size
                             and line size are spelled out pretty clearly in
                             specs, so you don't have to know all that much.
                          \_ Someone considerately overwrote my post here,
                             so to recap, look into a cpuid utility +
2021/10/17 [General] UID:1000 Activity:popular

You may also be interested in these entries...
2014/1/14-2/5 [Computer/SW/Languages/C_Cplusplus] UID:54763 Activity:nil
1/14    Why is NULL defined to be "0" in C++ instead of "((void *) 0)" like in
        C?  I have some overloaded functtions where one takes an integer
        parameter and the other a pointer parameter.  When I call it with
        "NULL", the compiler matches it with the integer version instead of
        the pointer version which is a problem.  Other funny effect is that
        sizeof(NULL) is different from sizeof(myPtr).  Thanks.
2013/4/29-5/18 [Computer/SW/Languages/C_Cplusplus, Computer/SW/Compilers] UID:54665 Activity:nil
4/29    Why were C and Java designed to require "break;" statements for a
        "case" section to terminate rather than falling-through to the next
        section?  99% of the time poeple want a "case" section to terminate.
        In fact some compilers issue warning if there is no "break;" statement
        in a "case" section.  Why not just design the languages to have
        termination as the default behavior, and provide a "fallthru;"
2012/12/18-2013/1/24 [Computer/SW/Languages/Perl] UID:54561 Activity:nil
12/18   Happy 25th birthday Perl, and FUCK YOU Larry Wall for fucking up
        the computer science formalism that sets back compilers development
        back for at least a decade:
        \_ I tried to learn Perl but was scared away by it.  Maybe scripting
           lanauages have to be like that in order to work well?
2011/3/7-4/20 [Computer/SW/Languages/C_Cplusplus] UID:54056 Activity:nil
3/7     I have a C question.  I have the following source code in two identical
        files t.c and t.cpp:
                #include <stdlib.h>
                int main(int argc, char *argv[]) {
                  const char * const * p1;
                  const char * * p2;
2010/1/22-30 [Computer/HW/Laptop, Computer/SW/OS/OsX] UID:53655 Activity:high
1/22    looking to buy a new development laptop
        needs ssdrive, >6 hr possible batt life, and runs linux reasonably
        Anyone have a recommendation? Thx.
        \_ thinkpad t23 w ssdrive and battery inplace of drive bay
        \_ Ever wondered what RICHARD STALLMAN uses for a laptop?  Well,
           wonder no more!
2010/1/12-29 [Computer/SW/Apps/Media] UID:53627 Activity:kinda low
1/12    How do I get a job NOT related to internet DNS social network cloud
        twitter GOOG EC2 amazon API ???
        \_ A CS job not related to API?
        \_ Chip design, or maybe software that does chip design. What is
           your major? How about game developer?
        \_ DNS? DNS? What era ado you live in? I agree that social network
2009/8/31-9/9 [Computer/SW/Compilers] UID:53312 Activity:nil
8/31    I'm trying to learn ActionScript, like a step by step tutorial.
        The site at
        isn't well organized. It doesn't explain how to get started with
        an editor, compiler, IDE. And should I even learn AS2 when you can
        learn AS3? Is Adobe Flash CS4 >>> CS3 or just CS4 > CS3?
2009/5/6-14 [Computer/SW/Languages/Perl, Computer/SW/Languages/Web] UID:52961 Activity:kinda low
5/6     I'm sure you've seen web sites that distribute software by making
        a user fill out a form and then e-mailing the user a randomly
        generate link to the software that works just once. What software
        is used to do this? I'd like to distribute software in such a way.
        \_ "Software"?  What web server/web application environment
           are you using?
2009/2/28-3/11 [Computer/SW/Compilers] UID:52661 Activity:nil
2/28    I'm looking for a recommendation of a compiler/IDE to use to
        develop C/C++ code under Linux. In school, we used jove/gcc and
        I still use emacs/vi and gcc to this day. However, it is really
        lacking. Under Windows I tried Visual Studio and there were some
        really nice things about it, although it was so overwhelming that
        after 6 months of occasional use I still didn't really know what I
2009/1/13-22 [Computer/Theory] UID:52367 Activity:kinda low
1/13    I am writing a commandline parser for a class and I could use some
        tips for algorithms to use. (The project is over and done so I am
        not cheating, but I am dissatisfied with my end result.) I STFW and
        didn't come up with too much I liked. I read the source for some
        shells like tcsh and that is *WAY* too complicated and relies on
        a lot of other code. I know that browsers and other apps have
Cache (509 bytes)
If your firewall is blocking outgoing connections to port 3125, you can use these links to download local copies. That work is extended here by: developing a high level program to measure the design and performance of the cache and TLB for any machine; using those measurements, along with published miss ratio data, to improve the accuracy of our run time predictions; Measuring Cache and TLB Performance and Their Effect on Benchmark Runtimes. IEEE Transactions on Computers, pages 1223--1235, October 1995.